code_junkie

Is this prime generator inefficient C++?

Nov 11th, 2011
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3.  
  4. using namespace std;
  5.  
  6. int main() {
  7. int testCases, first, second, counter = 0;
  8. bool isPrime = true;
  9. stringstream out;
  10.  
  11. cin >> testCases;
  12.  
  13. for (int i = 0; i < testCases; i++) {
  14. // get the next two numbers
  15. cin >> first >> second;
  16.  
  17. if (first%2 == 0)
  18. first++;
  19.  
  20. // find the prime numbers between the two given numbers
  21. for (int j = first; j <= second; j+=2) {
  22. // go through and check if j is prime
  23. for (int k = 2; k < j; k++) {
  24. if (j%k == 0) {
  25. isPrime = false;
  26. break;
  27. }
  28. }
  29. if (isPrime) {
  30. out << j << "n";
  31. }
  32. isPrime = true;
  33. }
  34. out << "n";
  35. }
  36.  
  37. cout << out.str();
  38.  
  39. return 0;
  40. }
  41.  
  42. #include <iostream>
  43. #include <map>
  44.  
  45. using namespace std;
  46.  
  47. template<typename T = int, typename M = map<T, T> >
  48. class prime_iterator {
  49. public:
  50. prime_iterator() : current(2), skips() { skips[4] = 2; }
  51. T operator*() { return current; }
  52. prime_iterator &operator++() {
  53. typename M::iterator i;
  54. while ((i = skips.find(++current)) != skips.end()) {
  55. T skip = i->second, next = current + skip;
  56. skips.erase(i);
  57. for (typename M::iterator j = skips.find(next);
  58. j != skips.end(); j = skips.find(next += skip)) {}
  59. skips[next] = skip;
  60. }
  61. skips[current * current] = current;
  62. return *this;
  63. }
  64. private:
  65. T current;
  66. M skips;
  67. };
  68.  
  69. int main() {
  70. prime_iterator<int> primes;
  71. for (; *primes < 1000; ++primes)
  72. cout << *primes << endl;
  73. return 0;
  74. }
  75.  
  76. for(int k=1;k<sqrt(n);++k)
  77.  
  78. for (int k=1;k*k < n;++k)
  79.  
  80. int sq = sqrt ( n );
  81. for (int k=1;k<sq;++k)
  82.  
  83. for (int k = 2; k < j; k++) {
  84. if (j%k == 0) {
  85. isPrime = false;
  86. break;
  87. }
  88. }
  89.  
  90. for(int k = 3; k <= j/2; k+=2 )
  91. {
  92. if( j % k == 0 )
  93. break;
  94. }
Add Comment
Please, Sign In to add comment