Advertisement
ismail5g

Largest Prime Divisor

Jul 24th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. vector<long long>prime;
  5. bitset<10000002>status;
  6. void seive()
  7. {
  8.     long long i, j;
  9.     for( i=4; i<10000002; i+=2) status[i]=1;
  10.     for(i=3; i*i<=10000002; i+=2){
  11.         if(status[i]==0){
  12.             for(j=i*i; j<10000002; j+=2*i){
  13.                 status[j]=1;
  14.             }
  15.         }
  16.     }
  17.     for(i=2; i<10000002; i++){
  18.         if(!status[i]){
  19.             prime.push_back(i);
  20.         }
  21.     }
  22. }
  23. vector<int> mx;
  24. int main()
  25. {
  26.     seive();
  27.     long long n, c=0, m, root, i, ans=0;
  28.     while(cin>>n && n){
  29.    
  30.     root=sqrt(n);
  31.     ans=c=0;
  32.     for(i=0; i<prime.size() && prime[i]*prime[i]<=n; i++){
  33.         if(n%prime[i]==0){
  34.             c++;
  35.             while(n%prime[i]==0){
  36.                 n/=prime[i];
  37.                 ans=max(ans,prime[i]);
  38.             }
  39.         }
  40.     }
  41.     ans=max(ans,n);
  42.     if(c<=1) cout<<-1<<endl;
  43.     else cout<<ans<<endl;
  44.     }
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement