fork download
  1. #include <stdio.h>
  2.  
  3. int printSequenceTo(unsigned n)
  4. {
  5. int depth = 0;
  6. if (n == 1) { printf("1"); return 1; }
  7. if (((n - 1) & (n - 2)) == 0) {
  8. depth = printSequenceTo(n - 1);
  9. goto end;
  10. }
  11. if (n & 1) {
  12. int factor = 3;
  13. do {
  14. if (n % factor == 0) {
  15. depth = printSequenceTo(n / factor * (factor - 1));
  16. goto end;
  17. }
  18. factor += 2;
  19. } while (factor * factor <= n);
  20. depth = printSequenceTo(n-1);
  21. goto end;
  22. }
  23. depth = printSequenceTo(n/2);
  24. end:
  25. printf(",%u", n);
  26. return depth + 1;
  27. }
  28.  
  29. int main(void)
  30. {
  31. printf(" [%d elements]\n", printSequenceTo(310));
  32. printf(" [%d elements]\n", printSequenceTo(42));
  33. printf(" [%d elements]\n", printSequenceTo(15));
  34. printf(" [%d elements]\n", printSequenceTo(1535));
  35. printf(" [%d elements]\n", printSequenceTo(2047));
  36. printf(" [%d elements]\n", printSequenceTo(3071));
  37. printf(" [%d elements]\n", printSequenceTo(495));
  38. printf(" [%d elements]\n", printSequenceTo(1025));
  39. }
Success #stdin #stdout 0s 2828KB
stdin
Standard input is empty
stdout
1,2,4,5,10,15,30,31,62,124,155,310 [12 elements]
1,2,3,6,7,14,21,42 [8 elements]
1,2,4,5,10,15 [6 elements]
1,2,4,8,16,17,34,51,102,153,306,307,614,1228,1535 [15 elements]
1,2,4,5,10,11,22,44,88,89,178,356,445,890,979,1958,2047 [17 elements]
1,2,4,5,10,20,40,41,82,83,166,249,498,747,1494,2988,3071 [17 elements]
1,2,4,5,10,11,22,44,55,110,165,330,495 [13 elements]
1,2,4,8,16,32,64,128,256,512,1024,1025 [12 elements]