How to calculate the Collatz sequence starting with 13 in C

1 Answer

0 votes
#include <stdio.h>
  
// 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) {
    printf("%3ld", x);
      
    while (x != 1) {
        x = CalcCollatz(x);
        printf("%3ld", x);
    }  
}
  
int main() {
    long long x = 13;
      
    PrintCollatzSequence(x);
       
    return 0;
}
   
   
   
   
/*
run:
    
13 40 20 10  5 16  8  4  2  1
 
*/

 



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

Related questions

1 answer 112 views
1 answer 135 views
1 answer 178 views
1 answer 143 views
1 answer 141 views
...