fork(1) download
  1. #include <stdio.h>
  2.  
  3. int printSequenceTo(unsigned n)
  4. {
  5. if (n == 1) { printf("1"); return 1; }
  6. int depth;
  7. if (n & 1) {
  8. int factor = 3;
  9. do {
  10. if (n % factor == 0) {
  11. depth = printSequenceTo(n / factor * (factor-1));
  12. factor = 0;
  13. break;
  14. }
  15. factor += 2;
  16. } while (factor * factor <= n);
  17. if (factor) depth = printSequenceTo(n-1);
  18. }
  19. else
  20. depth = printSequenceTo(n/2);
  21. printf(",%u", n);
  22. return depth + 1;
  23. }
  24.  
  25. int main(void)
  26. {
  27. printf(" [%d elements]\n", printSequenceTo(310));
  28. printf(" [%d elements]\n", printSequenceTo(42));
  29. printf(" [%d elements]\n", printSequenceTo(15));
  30. printf(" [%d elements]\n", printSequenceTo(1535));
  31. printf(" [%d elements]\n", printSequenceTo(2047));
  32. printf(" [%d elements]\n", printSequenceTo(3071));
  33. }
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]