runner% cat th.c /* th: three/halves program. Always ends up at 1. Written by NR Wagner, 28 Mar 1997 */ #include void run(int n); int main() { int n; while(scanf("%i", &n) != EOF) run(n); return 0; } /* run: follow one run to the end */ void run(int n) { while (n != 1) { printf("%i ", n); if ((n%2) == 0) n = n/2; else n = (3*n + 1)/2; } printf("%i\n", n); } runner% cc -o th th.c runner% th 1 1 2 2 1 3 3 5 8 4 2 1 4 4 2 1 5 5 8 4 2 1 6 6 3 5 8 4 2 1 7 7 11 17 26 13 20 10 5 8 4 2 1 8 8 4 2 1 9 9 14 7 11 17 26 13 20 10 5 8 4 2 1 10 10 5 8 4 2 1 11 11 17 26 13 20 10 5 8 4 2 1 12 12 6 3 5 8 4 2 1 13 13 20 10 5 8 4 2 1 14 14 7 11 17 26 13 20 10 5 8 4 2 1 15 15 23 35 53 80 40 20 10 5 8 4 2 1 16 16 8 4 2 1 17 17 26 13 20 10 5 8 4 2 1 18 18 9 14 7 11 17 26 13 20 10 5 8 4 2 1 19 19 29 44 22 11 17 26 13 20 10 5 8 4 2 1 20 20 10 5 8 4 2 1 21 21 32 16 8 4 2 1 22 22 11 17 26 13 20 10 5 8 4 2 1 23 23 35 53 80 40 20 10 5 8 4 2 1 24 24 12 6 3 5 8 4 2 1 25 25 38 19 29 44 22 11 17 26 13 20 10 5 8 4 2 1 26 26 13 20 10 5 8 4 2 1 27 27 41 62 31 47 71 107 161 242 121 182 91 137 206 103 155 233 350 175 263 395 593 890 445 668 334 167 251 377 566 283 425 638 319 479 719 1079 1619 2429 3644 1822 911 1367 2051 3077 4616 2308 1154 577 866 433 650 325 488 244 122 61 92 46 23 35 53 80 40 20 10 5 8 4 2 1 28 28 14 7 11 17 26 13 20 10 5 8 4 2 1 29 29 44 22 11 17 26 13 20 10 5 8 4 2 1 30 30 15 23 35 53 80 40 20 10 5 8 4 2 1 runner%