Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long int ll;
- bool mark[1000006+5];
- ll isprime[1000006+5],psize=0;
- void sieve()
- {
- mark[0]=true;
- mark[1]=false;
- ll i,j,k;
- for(i=2;i*i<=1000006;i++)
- {
- if(mark[i]==false)
- {
- for(j=i*i;j<=1000006;j+=i)
- {
- mark[j]=true;
- }
- }
- }
- for(i=0;i<=1000006;i++)
- {
- if(mark[i]==false)
- isprime[psize++]=i;
- }
- }
- ll digitsum(ll n)
- {
- ll i,j,k,sum=0;
- while(n)
- {
- sum+=(n%10);
- n/=10;
- }
- return sum;
- }
- /*
- ll primefact(ll n)
- {
- ll i,j,k,a,b,c,d,e,sum=0;
- for(i=0;isprime[i]*isprime[i]<=n;i++)
- {
- if(n%isprime[i]==0)
- {
- c=0;
- while(n%isprime[i]==0)
- {
- c++;
- n/=isprime[i];
- }
- sum+=(c*digitsum(isprime[i]));
- }
- }
- if(n>1)
- sum+=(digitsum(n));
- return sum;
- }
- */
- ll primefact(ll n)
- {
- ll i,j,k,a,b,c,sum=0;
- a=n;
- while(n%2==0)
- {
- n/=2;
- sum+=2;
- }
- for(i=3;i*i<=n;i+=2)
- {
- if(n%i==0)
- {
- while(n%i==0)
- {
- b=i;
- n/=b;
- sum+=digitsum(b);
- }
- }
- }
- if(n>2 && n!=a)
- sum+=digitsum(n);
- return sum;
- }
- int main()
- {
- ll n,i,j,k,t,pf,ds;
- cin>>t;
- while(t--)
- {
- cin>>n;
- if(n<4)
- {
- cout<<4<<endl;
- continue;
- }
- i=n+1;
- while(1)
- {
- ds=digitsum(i);
- pf=primefact(i);
- if(ds==pf)
- {
- cout<<i<<endl;
- break;
- }
- else
- {
- i++;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement