Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include <cstdio>
- using namespace std;
- const int MAXN = 2000000;
- int at[MAXN];
- int next[MAXN];
- void sieve()
- {
- for(int i = 0;i < MAXN; i++)
- at[ i ] = 1 ;
- for(int i = 2; i < MAXN; i ++)
- {
- if( at[ i ] > 1 ) continue ;
- for(int j = i ; j < MAXN; j += i)
- at[ j ] *= i;
- }
- for(int i = 2; i < MAXN; i++)
- {
- next[ at[at[i]] ] = i;
- at[ at[i] ] = i ;
- }
- return ;
- }
- int main()
- {
- sieve ();
- int n ;
- while ( scanf ("%d" ,&n) != EOF)
- {
- if( next[n] <= n )
- puts ("Not Exist!");
- else
- printf ("%d\n" , next[n]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement