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;
- #define maxn 10000007
- bool mark[maxn+5];
- void sieve()
- {
- mark[0]=true;
- mark[1]=true;
- for(ll i=2;i*i<=maxn;i++)
- {
- if(mark[i]==false)
- {
- for(ll j=i*i;j<=maxn;j+=i)
- {
- mark[j]=true;
- }
- }
- }
- }
- bool anagram(ll n)
- {
- vector<ll>v;
- ll a,b,c,d,i,j,k;
- a=n;
- while(a)
- {
- v.push_back(a%10);
- a/=10;
- }
- sort(v.begin(),v.end());
- do{
- b=0;
- for(i=0;i<v.size();i++)
- {
- b=b*10+v[i];
- }
- if(mark[b]==true)
- return false;
- }while(next_permutation(v.begin(),v.end()));
- return true;
- }
- int main()
- {
- sieve();
- ll n,i,j,k,a,b,c,d,e;
- while(cin>>n && n)
- {
- a=n;
- ll power=0,ans;
- while(a)
- {
- a/=10;
- power++;
- }
- b=pow(10,power);
- ans=0;
- for(i=n+1;i<b;i++)
- {
- if(mark[i]==false)
- {
- if(anagram(i)==true)
- {
- ans=i;
- break;
- }
- }
- }
- cout<<ans<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement