fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3.  
  4. using namespace std;
  5. typedef long long int ll;
  6.  
  7.  
  8. void seive(int r,vector<int> &spf) {
  9.  
  10. vector<int> arr(r+1,1);
  11. spf.resize(r+1);
  12. for(int i=0;i<=r;i++){
  13. spf[i]=i;
  14. }
  15.  
  16. for(int i=2;i<=r;i++){
  17. if(arr[i]==1){
  18. ll j= (ll)i*(ll)i;
  19.  
  20. while(j<=r){
  21. if(spf[j]==j){
  22. spf[j]=i;
  23. }
  24. arr[j]=0;
  25. j=j+i;
  26. }
  27. }
  28. }
  29.  
  30. }
  31.  
  32.  
  33.  
  34.  
  35. int main() {
  36. int r;
  37. cin>>r;
  38. vector<int> spf;
  39. seive(r,spf);
  40.  
  41. for (int i = 2; i <= r; i++) {
  42. cout << "SPF[" << i << "] = " << spf[i] << '\n';
  43. }
  44. return 0;
  45. }
Success #stdin #stdout 0.01s 5316KB
stdin
50
stdout
SPF[2] = 2
SPF[3] = 3
SPF[4] = 2
SPF[5] = 5
SPF[6] = 2
SPF[7] = 7
SPF[8] = 2
SPF[9] = 3
SPF[10] = 2
SPF[11] = 11
SPF[12] = 2
SPF[13] = 13
SPF[14] = 2
SPF[15] = 3
SPF[16] = 2
SPF[17] = 17
SPF[18] = 2
SPF[19] = 19
SPF[20] = 2
SPF[21] = 3
SPF[22] = 2
SPF[23] = 23
SPF[24] = 2
SPF[25] = 5
SPF[26] = 2
SPF[27] = 3
SPF[28] = 2
SPF[29] = 29
SPF[30] = 2
SPF[31] = 31
SPF[32] = 2
SPF[33] = 3
SPF[34] = 2
SPF[35] = 5
SPF[36] = 2
SPF[37] = 37
SPF[38] = 2
SPF[39] = 3
SPF[40] = 2
SPF[41] = 41
SPF[42] = 2
SPF[43] = 43
SPF[44] = 2
SPF[45] = 3
SPF[46] = 2
SPF[47] = 47
SPF[48] = 2
SPF[49] = 7
SPF[50] = 2