Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector<long long>prime;
- bitset<10000002>status;
- void seive()
- {
- long long i, j;
- for( i=4; i<10000002; i+=2) status[i]=1;
- for(i=3; i*i<=10000002; i+=2){
- if(status[i]==0){
- for(j=i*i; j<10000002; j+=2*i){
- status[j]=1;
- }
- }
- }
- for(i=2; i<10000002; i++){
- if(!status[i]){
- prime.push_back(i);
- }
- }
- }
- vector<int> mx;
- int main()
- {
- seive();
- long long n, c=0, m, root, i, ans=0;
- while(cin>>n && n){
- root=sqrt(n);
- ans=c=0;
- for(i=0; i<prime.size() && prime[i]*prime[i]<=n; i++){
- if(n%prime[i]==0){
- c++;
- while(n%prime[i]==0){
- n/=prime[i];
- ans=max(ans,prime[i]);
- }
- }
- }
- ans=max(ans,n);
- if(c<=1) cout<<-1<<endl;
- else cout<<ans<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement