fork(1) download
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int sieve[32000],tot, prime[16000];
  5. int p_range[100001];
  6.  
  7. void init()
  8. {
  9. int i,j;
  10. for(i=0;i<=32000; i++)
  11. sieve[i]=1;
  12. sieve[1]=0;
  13. for(i=2; i*i<=32000; i++)
  14. {
  15. if(sieve[i]==1)
  16. {
  17. for(j=2*i ; j<=32000; j+=i)
  18. sieve[j]=0;
  19. }
  20. }
  21. for(i=2;i<=32000; i++)
  22. {
  23. if(sieve[i]==1)
  24. prime[tot++]=i;
  25. }
  26. }
  27.  
  28. void prime_range(int start, int end)
  29. {
  30. int i,j,curr,seg;
  31. for(i=0;i<=(end-start); i++)
  32. p_range[i]=1;
  33. for(i=0;; i++)
  34. {
  35. curr=prime[i];
  36. //cout<<"c is "<<curr<<endl;
  37. if(curr*curr>end)
  38. break;
  39. seg= (start/curr)*curr;
  40. if(seg<start)
  41. seg+=curr;
  42. if(seg==curr)
  43. seg+=curr;
  44. for(; seg<=end; seg+=curr)
  45. p_range[seg-start]=0;
  46. }
  47. }
  48.  
  49. int main()
  50. {
  51. int test,i;
  52. cin>>test;
  53. init();
  54. int start,end;
  55. cout<<tot<<endl;
  56. while(test--)
  57. {
  58. cin>>start>>end;
  59. if(start<2)
  60. start=2;
  61. prime_range(start, end);
  62. for(i=0; i<=(end-start); i++)
  63. {
  64. if(p_range[i]==1)
  65. cout<<start+i<<endl;
  66. }
  67. cout<<endl;
  68. }
  69. return 0;
  70. }
  71.  
Success #stdin #stdout 0s 3920KB
stdin
Standard input is empty
stdout
3432