Advertisement
a53

jocprim_OF1

a53
Mar 25th, 2020
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define NN 10000000
  6.  
  7. ifstream f("jocprim.in");
  8. ofstream g("jocprim.out");
  9.  
  10. int ciur[NN + 1], v[NN + 1];
  11.  
  12. int main() {
  13. //algoritm de tip ciurul lui Eratostene(la final ciur[i] va fi cel mai mare divizor prim al lui i)
  14. for (int i = 2; i <= NN; i++)
  15. if (ciur[i] == 0)
  16. {
  17. ciur[i] = i;
  18. for (int j = 2; i * j <= NN; j++)
  19. ciur[i * j] = i;
  20. }
  21. int n, x, i, cnt = 0;
  22. f >> n;
  23. while (n--)
  24. {
  25. f >> x;
  26. if (v[ciur[x]] == 0)
  27. cnt++; //daca v[ciur[x]] este 0, inseamna ca apare o noua pereche
  28. v[ciur[x]]++; //numarul ciur[x] este cel mai mare divizor prim pentru inca un numar din sir(x)
  29. }
  30. g << cnt << '\n'; //afisam numarul de perechi
  31. for (i = 2; i <= NN; i++) //afisam perechile
  32. if (v[i]) //daca i este cel mai mare divizor prim pentru cel putin unul din termenii sirului
  33. g << i << " " << v[i] << '\n'; // afisam i si frecventa acestuia
  34. f.close();
  35. g.close();
  36. return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement