Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2018
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. //#include "stdafx.h"
  2. #include <iostream>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. const int MAX = 1200000;
  8. bool primes[MAX];
  9. int ulam[2009][2009];
  10. int n = 2;
  11. int up_right = 1;
  12. int down_left = 2;
  13.  
  14. void sieve()
  15. {
  16. primes[0] = primes[1] = true;
  17. for (int i = 2; i*i < MAX; i++)
  18. {
  19. if (!primes[i])
  20. for (int j = 2 * i; j < MAX; j += i)
  21. primes[j] = true;
  22. }
  23. }
  24.  
  25.  
  26. void spiral_generation(int k)
  27. {
  28. int x = 1000, y = 1000;
  29. int minx = 2e9, miny = 2e9, maxx = -2e9, maxy = -2e9;
  30. ulam[x][y] = 1;
  31. while (n <= k)
  32. {
  33. if (n > k) break;
  34. for (int i = 1; i <= up_right; i++)
  35. {
  36. x++;;
  37. ulam[x][y] = n;
  38. maxx = max(maxx, x);
  39. minx = min(minx, x);
  40. n++;
  41. if (n > k) break;
  42. }
  43. if (n > k) break;
  44. for (int i = 1; i <= up_right; i++)
  45. {
  46. y--;
  47. ulam[x][y] = n;
  48. miny = min(miny, y);
  49. maxy = max(maxy, y);
  50. n++;
  51. if (n > k) break;
  52. }
  53. up_right += 2;
  54. if (n > k) break;
  55. for (int i = 1; i <= down_left; i++)
  56. {
  57. x--;
  58. ulam[x][y] = n;
  59. maxx = max(maxx, x);
  60. minx = min(minx, x);
  61. n++;
  62. if (n > k) break;
  63. }
  64. if (n > k) break;
  65. for (int i = 1; i <= down_left; i++)
  66. {
  67. y++;
  68. ulam[x][y] = n;
  69. miny = min(miny, y);
  70. maxy = max(maxy, y);
  71. n++;
  72. if (n > k) break;
  73. }
  74. down_left += 2;
  75. }
  76.  
  77. for (int i = miny; i <= maxy; i++)
  78. {
  79. for (int j = minx; j <= maxx; j++)
  80. {
  81. if (ulam[j][i] == 0) cout << " ";
  82. else
  83. {
  84. if (!primes[ulam[j][i]]) cout << "#";
  85. else cout << ".";
  86. }
  87. }
  88. cout << endl;
  89. }
  90. }
  91.  
  92. int main()
  93. {
  94.  
  95. sieve();
  96. int k;
  97. cin >> k;
  98. if (k == 1) cout << ".";
  99. else if (k == 2)
  100. {
  101. cout << ".#";
  102. }
  103. else if (k == 3 || k == 4)
  104. {
  105. cout << " #" << endl << ".#";
  106. }
  107. else if (k == 5)
  108. {
  109. cout << "#.#" << endl << " .#";
  110. }
  111. else spiral_generation(k);
  112.  
  113.  
  114. // system("pause");
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement