fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5.  
  6. typedef struct Link
  7. {
  8. int val;
  9. struct Link *nxt;
  10. }Link;
  11.  
  12. void printPrime(int m,int n);
  13. void addList(int val);
  14. int nxtPrime(int old);
  15.  
  16. Link *head = new Link;
  17.  
  18. void PrintLink()
  19. {
  20. Link *t = head;
  21. cout<<"PRINT LINK";
  22. while(t!=NULL)
  23. {
  24. cout<<"VAL = "<<t->val<<endl;
  25. t=t->nxt;
  26. }
  27. }
  28.  
  29.  
  30. int main()
  31. {
  32. int t,m,n;
  33. //cout<<"enter T: "<<endl;
  34. cin>>t;
  35.  
  36. head ->val = 2;
  37. head->nxt = NULL;
  38.  
  39.  
  40. for(int i=0;i<t;i++)
  41. {
  42. //cout<<"enter m n: "<<endl;
  43. cin>>m>>n;
  44.  
  45. //m-n prime num
  46. printPrime(m,n);
  47. //check:=
  48.  
  49. /*for(int j=2;j<m;j++)
  50. {
  51. cout<<"Nxt Prime : "<<nxtPrime(j)<<endl;
  52. }*/
  53.  
  54. cout<<endl;
  55. }
  56.  
  57. return 0;
  58. }
  59.  
  60. void printPrime(int m,int n)
  61. {
  62. if(m<=2){
  63. //cout<<"Prime Found: "<<m<<endl;
  64. m=3;
  65. //return;
  66. }
  67. if(m%2==0)
  68. m++;
  69. for(int i=m;i<=n;i=i+2)
  70. {
  71. bool flag = true;
  72. //cout<<"Value to be checked: "<<i<<endl;
  73.  
  74. Link *p =head;
  75. int div = p->val;
  76. while((div*div <= i) && (p->nxt != NULL))
  77. {
  78. //cout<<"div == "<< p->val <<endl;
  79. if(i%p->val == 0)
  80. {
  81. flag = false;
  82. break;
  83. }
  84. p = p->nxt;
  85. div=p->val;
  86. }
  87.  
  88. while( (div*div <= i) && (flag==true))
  89. {
  90. //cout<<"Add list div == "<< div <<endl;
  91. if(i%div == 0)
  92. {
  93. flag = false;
  94. break;
  95. }
  96. div = nxtPrime(div);
  97. Link *q = new Link;
  98. q->val = div;
  99. q->nxt = NULL;
  100. p->nxt = q;
  101. p=p->nxt;
  102.  
  103. }
  104. if(flag)
  105. cout<<"Prime FOund: "<<i<<endl;
  106. }
  107. }
  108.  
  109. int nxtPrime(int old)
  110. {
  111. Link *p ;
  112. bool flag = true;
  113.  
  114. if(old == 2)
  115. old++;
  116. else
  117. old+=2;
  118.  
  119. p = head;
  120. int div = p->val;
  121. //cout<<"div : "<<div<<" Old:"<<old<<endl;
  122.  
  123. while(flag)
  124. {
  125. while(div*div <= old)
  126. {
  127. //cout<<"DIV :"<<div<<" old : "<<old<<endl;
  128. if(old%div==0)
  129. {
  130. old+=2;
  131. break;
  132. }
  133. p=p->nxt;
  134. div = p->val;
  135. }
  136. if(div*div > old)
  137. {
  138. flag = false;
  139. }
  140. }
  141. //cout<<"nxt Prime = " << old <<endl;
  142. return old;
  143. }
  144.  
Success #stdin #stdout 0s 3232KB
stdin
1
50 100
stdout
Prime FOund: 53
Prime FOund: 59
Prime FOund: 61
Prime FOund: 67
Prime FOund: 71
Prime FOund: 73
Prime FOund: 79
Prime FOund: 83
Prime FOund: 89
Prime FOund: 97