fork(3) download
  1. #include <iostream>
  2. #include<math.h>
  3. #include<vector>
  4. #include<stdlib.h>
  5. #include<stdio.h>
  6. using namespace std;
  7.  
  8. bool mark[100001];
  9.  
  10. //vector<int>prime;
  11. int prime[100001];
  12. int c=0;
  13.  
  14. void seive()
  15. {
  16. int i,j;
  17. mark[0]=mark[1]=1;
  18.  
  19. for(i=2;i<=100001;i++)
  20. {
  21. if(mark[i]==0)
  22. {
  23. //prime.push_back(i);
  24. prime[c++]=i; // inserting the prime i in the array
  25. for(j=2*i;j<=100001;j+=i)
  26. mark[j]=1; // marking the multiples of i as 1
  27. }
  28. }
  29. prime[0]=2;
  30. }
  31.  
  32. int main() {
  33. // your code goes here
  34. int test,j;
  35. cin>>test;
  36. for(j=0;j<100001;j++)
  37. mark[j]=0;
  38. seive();
  39. while(test--)
  40. {
  41. int m,n,i,k=0;
  42.  
  43. cin>>m>>n;
  44.  
  45. if(n<=100000)
  46. {
  47. for(i=0;i<c;i++)
  48. {
  49. //cout<<mark[i]<<endl;
  50. //if(!mark[i])
  51. //cout<<i<<endl;
  52. if(prime[i]>=m && prime[i]<=n) cout<<prime[i]<<endl;
  53. // o/p all prime no.s in the range (m,n)
  54.  
  55. }
  56. cout<<endl;
  57. continue;
  58. }
  59. else
  60. {
  61. if(m<=100000)
  62. {
  63. for(i=0;i<c;i++)
  64. {
  65. if(prime[i]>=m && prime[i]<=n)
  66. cout<<prime[i]<<endl;
  67. }
  68. }
  69.  
  70. int seg[100001];
  71. for(i=0;i<100001;i++)
  72. seg[i]=0;
  73. for(i=0;i<c;i++)
  74. {
  75. //cout<<"the prime[i] is "<<prime[i]<<endl;
  76. for(j= prime[i] * (m/prime[i]); j<=n; j+=prime[i]) // offset values from each prime no. in the high range
  77. {
  78. if(j>=m)
  79.  
  80. seg[j-m]=1;
  81. //p++;
  82.  
  83. }
  84. }
  85.  
  86. for(i=0;i<100001;i++)
  87. {
  88. if(seg[i]==0)
  89. cout<<m+i<<endl;
  90. }
  91. }
  92. cout<<endl;
  93. }
  94. return 0;
  95. }
Success #stdin #stdout 0s 3492KB
stdin
2
1 10
3 5

Output:
2
3
5
7

3
5
stdout
2
3
5
7

3
5