Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdio>
  3. #define MAX 10005
  4.  
  5. using namespace std;
  6.  
  7. int bprimes[MAX];
  8. int primes[10001];
  9.  
  10. void seive()
  11. {
  12. for(int i=0; i<MAX; i++)
  13. {
  14. bprimes[i] = 1;
  15. }
  16. bprimes[0] = bprimes[1] = 0; // 0 indicates not prime. 1 indicates prime
  17.  
  18. for(int i=4; i<MAX; i+=2)
  19. {
  20. bprimes[i] = 0;
  21. }
  22.  
  23. for(int i=3; i*i<MAX; i+=2)
  24. {
  25. if(bprimes[i])
  26. {
  27. for(int j=i*i; j<MAX; j+=i)
  28. {
  29. bprimes[j] = 0;
  30. }
  31. }
  32. }
  33.  
  34. int k=1;
  35. primes[0] = 1; // In this problem 1 is prime
  36. for(int i=1; i<MAX; i++)
  37. {
  38. if(bprimes[i])
  39. {
  40. primes[k] = i;
  41. k++;
  42. }
  43. }
  44.  
  45. }
  46.  
  47. int main()
  48. {
  49. seive();
  50. int N,c,cc,x,y;
  51. while(scanf("%d %d",&N,&c) == 2)
  52. {
  53. cc=c;
  54. int counter=1;
  55. for(int i=0; i<N; i++)
  56. {
  57. if(primes[i]>N)
  58. {
  59. break;
  60. }
  61. else
  62. {
  63. counter = i+1; //because 1 is prime number. so i added 1.
  64. }
  65. }
  66.  
  67. if(counter&1) cc=2*c-1;
  68. else cc = 2*c;
  69.  
  70. // cout<<c<<" "<<counter<<" "<<endl;
  71.  
  72. if(c>counter) cc = counter;
  73. //cout<<c<<" "<<counter<<" "<<endl;
  74.  
  75. int st = (counter-cc)/2;
  76. int en = st+cc-1;
  77.  
  78. //cout<<counter<<" "<<st<<" "<<en<<endl;
  79.  
  80. printf("%d %d: ",N,c);
  81. for(int i=st; i<=en; i++)
  82. {
  83. if(i==en)
  84. {
  85. printf("%d\n\n",primes[i]);
  86. }
  87. else
  88. {
  89. printf("%d ",primes[i]);
  90. }
  91. }
  92.  
  93.  
  94. }
  95.  
  96. // printf("%d \n",counter);
  97.  
  98. return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement