Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1.  
  2. #include <fstream>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. int arr[10000];
  8.  
  9. ifstream fin("arma1.in");
  10. ofstream fout("arma1.out");
  11.  
  12. struct factor
  13. {
  14. int prime;
  15. int exp;
  16. };
  17.  
  18. const int DIMCIUR = 44721;
  19. const int PLIM = 213;
  20. const int DIMPR = 4648;
  21.  
  22. bool ciur[DIMCIUR + 1];
  23. int prime[DIMPR];
  24. factor descfac[20];
  25.  
  26. void createsieve()
  27. {
  28. ciur[0] = true;
  29. ciur[1] = true;
  30. ciur[2] = false;
  31. int p = 2, ix;
  32. while (p <= PLIM) {
  33. ix = p * p;
  34. while (ix <= DIMCIUR) {
  35. ciur[ix] = true;
  36. ix += p;
  37. }
  38. p++;
  39. while (ciur[p]) {
  40. p++;
  41. }
  42. }
  43. }
  44.  
  45. int createprimes()
  46. {
  47. int ix = 0;
  48. for (int i = 2; i <= DIMCIUR; i++)
  49. {
  50. if (!ciur[i]) {
  51. prime[ix++] = i;
  52. }
  53. }
  54. return ix;
  55. }
  56.  
  57. int main()
  58. {
  59. createsieve();
  60. int dimp = createprimes();
  61. int T = 0, n, i, j, k;
  62. fin >> T >> n;
  63. for (i = 0; i < n; i++)
  64. {
  65. fin >> arr[i];
  66. }
  67. long long sum = 0;
  68. int exp;
  69. for (i = 0; i < n; i++)
  70. {
  71. k = 0;
  72. j = 0;
  73. while (arr[i] > 1)
  74. {
  75. exp = 0;
  76. while (arr[i] > 1 && arr[i] % prime[j] == 0)
  77. {
  78. exp++;
  79. arr[i] /= prime[j];
  80. }
  81. if (exp > 0)
  82. {
  83. descfac[k].prime = prime[j];
  84. descfac[k].exp = exp;
  85. k++;
  86. }
  87. j++;
  88. }
  89.  
  90. }
  91. if (T == 1)
  92. {
  93. fout << sum << '\n';
  94. }
  95. else
  96. {
  97. for (i = 0; i < n; i++)
  98. {
  99. fout << arr[i] << '\n';
  100. }
  101. }
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement