fork download
  1. #include <iostream>
  2.  
  3. struct elem
  4. {
  5. int val;
  6. bool prime;
  7. elem * next;
  8. elem(int v, bool p, elem * n) : val(v), next(n), prime(p) {}
  9. };
  10.  
  11. class Kolechko
  12. {
  13. public:
  14. Kolechko(int size)
  15. {
  16. first = new elem(2, true, NULL);
  17. first->next = first;
  18. elem * prev = first;
  19. elem * t;
  20. for (int i = 0; i < size - 1; i++)
  21. {
  22. t = new elem(prev->val + 1, true, first);
  23. prev->next = t;
  24. prev = t;
  25. }
  26. }
  27.  
  28. void show()
  29. {
  30. elem * t = first;
  31. while(t->next != first)
  32. {
  33. if (t->prime)
  34. {
  35. std::cout << t->val << std::endl;
  36. }
  37. t = t->next;
  38. }
  39. }
  40.  
  41. void calc(int step = 2)
  42. {
  43. int count = step - 1;
  44. elem * t = first;
  45. for (int i = 0; i < count; i++)
  46. {
  47. t = t->next;
  48. }
  49. elem * s = t;
  50. while(t->next != first)
  51. {
  52. if (count < 1)
  53. {
  54. count = step - 1;
  55. t->prime = false;
  56. t = t->next;
  57. }
  58. else
  59. {
  60. t = t->next;
  61. count--;
  62. }
  63. }
  64. if (s->next != first)
  65. calc(s->val);
  66. }
  67.  
  68. private:
  69. elem * first;
  70. };
  71.  
  72. int main()
  73. {
  74. Kolechko * kolco = new Kolechko(100);
  75. kolco->calc();
  76. kolco->show();
  77. return 0;
  78. }
Success #stdin #stdout 0s 3272KB
stdin
Standard input is empty
stdout
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97