diff options
author | mjfernez <mjfernez@gmail.com> | 2020-02-09 15:16:26 -0500 |
---|---|---|
committer | mjfernez <mjfernez@gmail.com> | 2020-02-09 15:16:26 -0500 |
commit | 93ea7fe5957b62f18e8fbd17a21696bd7de6332d (patch) | |
tree | d90aed60d687bcf195f1150777f37cbe8a149814 /14-Longest-Collatz-Sequence/collatz.c | |
parent | 125ec5bc3d8bfc224b7d32bcfbbc37b9fb5d441f (diff) | |
download | Project_Euler_Solutions-93ea7fe5957b62f18e8fbd17a21696bd7de6332d.tar.gz |
Organized everything, update README
Diffstat (limited to '14-Longest-Collatz-Sequence/collatz.c')
-rw-r--r-- | 14-Longest-Collatz-Sequence/collatz.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/14-Longest-Collatz-Sequence/collatz.c b/14-Longest-Collatz-Sequence/collatz.c new file mode 100644 index 0000000..ec77af6 --- /dev/null +++ b/14-Longest-Collatz-Sequence/collatz.c @@ -0,0 +1,31 @@ +#include <stdlib.h> +#include <stdio.h> +#include <math.h> +// In C, it's immediately obvious my python solution is inefficient + +// For keeping track of the length of sequences +// c is a temporary counter, s changes when c reaches a new maximum +long int c = 0; +long int s = 0; +long int collatz(long int seed){ + c++; + if(seed == 1) + return 0; + if(seed % 2 == 0) + seed = seed / 2; + else + seed = 3 * seed + 1; + collatz(seed); +} + +int main(){ + for(long int i = 1; i < pow(10, 6); i++){ + c = 0; + collatz(i); + if(c > s){ + s = c; + } + } + printf("The longest sequence has %d numbers \n", s); + return 0; +} |