fork download
  1. #include <bits/stdc++.h>
  2. #define mem(a,v) memset(a,v,sizeof a)
  3. #define lol long long
  4. #define max(a,b) (a>b?a:b)
  5. #define min(a,b) (a<b?a:b)
  6. #define max3(x,y,z) max(x,max(y,z))
  7. #define min3(x,y,z) min(x,min(y,z))
  8. #define f first
  9. #define s second
  10. #define fr(i,n) for(int j=i;j<n;j++)
  11. #define rev(a) reverse(a.begin(),a.end())
  12. #define all(a) a.begin(),a.end()
  13. #define rall(a) a.rbegin(),a.rend()
  14. #define lb(a,v) lower_bound(all(a),v)
  15. #define ub(a,v) upper_bound(all(a),v)
  16. #define ins(v) insert(v)
  17. #define pb(v) push_back(v)
  18. #define sz(x) (int)(x).size()
  19. #define MOD 1000000007
  20. using namespace std;
  21. set<lol>st;
  22. void get_div(lol n)
  23. {
  24. lol i=2,m=n;
  25. while(i*i<n)
  26. if(n%i==0)
  27. st.ins(i),n/=i;
  28. else i++;
  29. if(n<m)
  30. st.ins(n);
  31. if(i*i==m)
  32. st.ins(i);
  33. }
  34. lol get_lower(lol n)
  35. {
  36. get_div(n);
  37. //cout<<n<<" "<<sz(st)<<endl;
  38. if(sz(st)==0)
  39. return n;
  40. else if(sz(st)==1)
  41. return *st.begin();
  42. return 1;
  43. }
  44. int main(){
  45. lol n,x=25;
  46. while(x--)
  47. {
  48. scanf("%lld",&n);
  49. printf("%lld : %lld \n",x,get_lower(n));
  50. st.clear();
  51. }
  52. return 0;
  53. }
Success #stdin #stdout 0s 4456KB
stdin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
stdout
24 : 1 
23 : 2 
22 : 3 
21 : 2 
20 : 5 
19 : 1 
18 : 7 
17 : 1 
16 : 3 
15 : 1 
14 : 11 
13 : 1 
12 : 13 
11 : 1 
10 : 1 
9 : 1 
8 : 17 
7 : 1 
6 : 19 
5 : 1 
4 : 1 
3 : 1 
2 : 23 
1 : 1 
0 : 5