Mercurial > coderloop
view src/collatz.c @ 0:307a81e46071 tip
initial committ
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Tue, 18 Oct 2011 01:17:49 -0700 |
parents | |
children |
line wrap: on
line source
2 #include <stdio.h>3 #include <stdlib.h>5 int main(int argc, char *argv[]){6 FILE *fp;7 int n;8 if((fp=fopen(argv[1] ,"r")) == NULL) {9 printf("Cannot open file.\n");10 exit(1);}11 fscanf(fp, "%d", &n); /* read from file */12 int answer = search_collatz(n);13 printf("%d\n", answer); }15 long long collatz_next(long long n){16 if (!(n % 2)){17 return n/2;}18 else {19 return 1+(n*3);}}21 int collatz_length(int n){22 long long t = n;23 int d = 1;24 while (t > 1){25 t = collatz_next(t);26 d++;}27 return d;}29 int search_collatz(int n){30 int max = 0;31 int max_val = 0;32 int temp_val;33 int i;34 for (i = 1; i<n; i++){35 temp_val = collatz_length(i);36 if (temp_val > max_val){37 max = i;38 max_val = temp_val;}}39 return max;}