#include #include #define MAXSIZE 1000000 int computeLen ( int n, int len[] ) { int t, j; t = 0; j = n; while (len[n] == -1) { ++t; if (n % 2 == 0) n /= 2; else n = 3*n + 1; if (n >= MAXSIZE) { fprintf(stderr, "Array limit exceeded... n = %d\n", n); exit(1); } } t += len[n]; n = j; j = t; while (len[n] == -1) { len[n] = t; t--; if (n % 2 == 0) n /= 2; else n = 3*n + 1; } return j; } int main () { int n, B, len[MAXSIZE], t, max; printf("Enter bound: "); scanf("%d", &B); len[0] = len[1] = 0; for (n=2; n max) { printf("len[%3d] = %3d\n", n, t); max = t; } } exit(0); } Enter bound: 1000 len[ 1] = 0 len[ 2] = 1 len[ 3] = 7 len[ 6] = 8 len[ 7] = 16 len[ 9] = 19 len[ 18] = 20 len[ 25] = 23 len[ 27] = 111 len[ 54] = 112 len[ 73] = 115 len[ 97] = 118 len[129] = 121 len[171] = 124 len[231] = 127 len[313] = 130 len[327] = 143 len[649] = 144 len[703] = 170 len[871] = 178