Skip to content

Instantly share code, notes, and snippets.

@johngibb
Created April 6, 2015 14:19
Show Gist options
  • Save johngibb/8473278805112ed95e18 to your computer and use it in GitHub Desktop.
Save johngibb/8473278805112ed95e18 to your computer and use it in GitHub Desktop.
Collatz in C
#include <stdio.h>
int collatzLength(long n) {
if (n <= 1) {
return 1;
}
int steps = 0;
while (n > 1) {
n = (n%2==0) ? n/2 : 3*n + 1;
steps++;
}
return steps;
}
long maxCollatzLength(long n) {
long val = n;
long maxLen = 0;
for (long i = 0; i < n; i++) {
long len = collatzLength(i);
if (len > maxLen) {
val = i;
maxLen = len;
}
}
return val;
}
int main() {
printf("len: %ld\n", maxCollatzLength(1000000));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment