Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define n 20000005
- bool mark[n+5]={false};
- long long int isprime[n+5],i,j,k;
- vector<long long int>v;
- void sieve()
- {
- mark[0]=true;
- mark[1]=true;
- for(i=2;i*i<=n;i+=2)
- {
- if(mark[i]==false)
- {
- for(j=i*i;j<=n;j+=i)
- mark[j]=true;
- }
- }
- k=0;
- for(i=2;i<=n;i++)
- {
- if(mark[i]==false)
- isprime[k++]=i;
- }
- }
- void solution(long long int a)
- {
- long long int cnt=0;
- v.clear();
- for(i=0;isprime[i]*isprime[i]<=a;i++)
- {
- if(a%isprime[i]==0)
- {
- v.push_back(i);
- while(a%isprime[i]==0)
- {
- a/=isprime[i];
- }
- }
- }
- if(a!=1)
- v.push_back(a);
- // sort(v.begin(),v.end());
- if(v.size()>1)
- cout<<v[v.size()-1]<<endl;
- else
- cout<<-1<<endl;
- }
- int main()
- {
- sieve();
- long long int a;
- while(cin>>a && a)
- {
- if(a<0)
- a*=-1;
- solution(a);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement