Comenzando con cualquier número entero positivo N, la secuencia de Collatz se define correspondiente a n como los números formados por las siguientes operaciones:
- Si n es par, entonces n = n/2.
- Si n es impar, entonces n = 3*n + 1.
- Repita los pasos anteriores, hasta que se convierta en 1.
Ejemplos:
Input : 3 Output : 3, 10, 5, 16, 8, 4, 2, 1 Input : 6 Output : 6, 3, 10, 5, 16, 8, 4, 2, 1
A continuación se muestra la implementación:
C++
// CPP program to print Collatz sequence #include <bits/stdc++.h> using namespace std; void printCollatz(int n) { // We simply follow steps // while we do not reach 1 while (n != 1) { cout << n << " "; // If n is odd if (n & 1) n = 3*n + 1; // If even else n = n/2; } // Print 1 at the end cout << n; } // Driver code int main() { printCollatz(6); return 0; }
Java
// Java program to print // Collatz sequence import java.io.*; class GFG { static void printCollatz(int n) { // We simply follow steps // while we do not reach 1 while (n != 1) { System.out.print(n + " "); // If n is odd if ((n & 1) == 1) n = 3 * n + 1; // If even else n = n / 2; } // Print 1 at the end System.out.print(n); } // Driver code public static void main (String[] args) { printCollatz(6); } } // This code is contributed // by akt_mit
Python3
# Python 3 program to print # Collatz sequence def printCollatz(n): # We simply follow steps # while we do not reach 1 while n != 1: print(n, end = ' ') # If n is odd if n & 1: n = 3 * n + 1 # If even else: n = n // 2 # Print 1 at the end print(n) # Driver code printCollatz(6) # This code is contributed # by vaibhav29498
C#
// C# program to print Collatz sequence using System; class GFG { static void printCollatz(int n) { // We simply follow steps // while we do not reach 1 while (n != 1) { Console.Write (n + " "); // If n is odd if ((n & 1) == 1) n = 3 * n + 1; // If even else n = n / 2; } // Print 1 at the end Console.Write (n); } // Driver code static void Main() { printCollatz(6); } } // This code is contributed by // Manish Shaw (manishshaw1)
PHP
<?php // PHP program to print Collatz sequence function printCollatz($n) { // We simply follow steps // while we do not reach 1 while ($n != 1) { echo $n . " "; // If $n is odd if ($n & 1) $n = 3 * $n + 1; // If even else $n = $n / 2; } // Print 1 at the end echo $n; } // Driver code printCollatz(6); // This code is contributed // by ChitraNayal ?>
Javascript
<script> // Javascript program to print Collatz sequence function printCollatz(n) { // We simply follow steps // while we do not reach 1 while (n != 1) { document.write(n + " "); // If n is odd if ((n & 1) != 0) n = 3*n + 1; // If even else n = parseInt(n/2, 10); } // Print 1 at the end document.write(n); } printCollatz(6); </script>
Producción
6 3 10 5 16 8 4 2 1
Complejidad de tiempo : O (log n) ya que n se reduce a la mitad en while loop
Espacio Auxiliar: O(1)