Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- #include <ext/pb_ds/assoc_container.hpp>
- using namespace __gnu_pbds;
- typedef tree<ll,null_type,less_equal<ll>,rb_tree_tag,tree_order_statistics_node_update>ordered_set;
- #define suni ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
- #define endl "\n"
- #define mn int main()
- #define frac() cout.unsetf(ios::floatfield);cout.precision(6);cout.setf(ios::fixed,ios::floatfield);
- const int mx=1e7+123;
- bitset<mx>isprime;
- vector<int>prime;
- void primegen(int n)
- {
- n+=10;
- for(int i=3;i<=n;i+=2) isprime[i]=1;
- for(int i=3;i*i<=n;i+=2){
- if(isprime[i]){
- for(int j=i*i;j<=n;j+=(i*2))
- isprime[j]=0;
- }
- } //O(n)
- isprime[2]=1;
- prime.push_back(2);
- for(int i=3;i<=n;i+=2){
- if (isprime[i]) prime.push_back(i);
- }
- }
- vector<long long >factorization(long long n)
- {
- vector<long long >ret;
- for(auto p : prime){
- if(1LL*p*p>n) break;
- if(n%p==0){
- while(n%p==0){
- ret.push_back(p);
- n/=p;
- }
- }
- }
- if(n>1) ret.push_back(n);
- return ret;
- }
- mn
- {
- suni;
- primegen(1e7);
- long long n;
- while(cin>>n)
- {
- if(n==0) break;
- vector<ll>ans=factorization(abs(n));
- if(ans.size()== 1) cout<<-1<<endl;
- else cout<<ans[ans.size()-1]<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement