How to calculate the Collatz sequence for a range starting from 3 to 10 in C++

1 Answer

0 votes
#include <iostream>

// Collatz Sequence Example:
// 13 - 40 - 20 - 10 - 5 - 16 - 8 - 4 - 2 - 1
 
long long CalcCollatz(long long x) {
    // if (number is odd) return x*3 + 1
    // if (number is even) return x/2 
    if (x & 1) { // odd
        return x * 3 + 1;
    }
    return x / 2; // even
}

void PrintCollatzSequence(long long x) {
    std::cout << x << " ";
     
    while (x != 1) {
        x = CalcCollatz(x);
        std::cout << x << " ";
    }
}
 
int main() {
    for (long long i = 3; i < 11; i++) {
        PrintCollatzSequence(i);
        std::cout << "\n";
    }
}
  
  
  
  
/*
run:
   
3 10 5 16 8 4 2 1 
4 2 1 
5 16 8 4 2 1 
6 3 10 5 16 8 4 2 1 
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 
8 4 2 1 
9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 
10 5 16 8 4 2 1 


*/

 



answered Nov 6, 2023 by avibootz
edited Nov 7, 2023 by avibootz
...