Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstdio>
- #define MAX 10005
- using namespace std;
- int bprimes[MAX];
- int primes[10001];
- void seive()
- {
- for(int i=0; i<MAX; i++)
- {
- bprimes[i] = 1;
- }
- bprimes[0] = bprimes[1] = 0; // 0 indicates not prime. 1 indicates prime
- for(int i=4; i<MAX; i+=2)
- {
- bprimes[i] = 0;
- }
- for(int i=3; i*i<MAX; i+=2)
- {
- if(bprimes[i])
- {
- for(int j=i*i; j<MAX; j+=i)
- {
- bprimes[j] = 0;
- }
- }
- }
- int k=1;
- primes[0] = 1; // In this problem 1 is prime
- for(int i=1; i<MAX; i++)
- {
- if(bprimes[i])
- {
- primes[k] = i;
- k++;
- }
- }
- }
- int main()
- {
- seive();
- int N,c,cc,x,y;
- while(scanf("%d %d",&N,&c) == 2)
- {
- cc=c;
- int counter=1;
- for(int i=0; i<N; i++)
- {
- if(primes[i]>N)
- {
- break;
- }
- else
- {
- counter = i+1; //because 1 is prime number. so i added 1.
- }
- }
- if(counter&1) cc=2*c-1;
- else cc = 2*c;
- // cout<<c<<" "<<counter<<" "<<endl;
- if(c>counter) cc = counter;
- //cout<<c<<" "<<counter<<" "<<endl;
- int st = (counter-cc)/2;
- int en = st+cc-1;
- //cout<<counter<<" "<<st<<" "<<en<<endl;
- printf("%d %d: ",N,c);
- for(int i=st; i<=en; i++)
- {
- if(i==en)
- {
- printf("%d\n\n",primes[i]);
- }
- else
- {
- printf("%d ",primes[i]);
- }
- }
- }
- // printf("%d \n",counter);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement