fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <omp.h>
  5.  
  6. using namespace std;
  7.  
  8. bool isPrime(int n) {
  9. if (n <= 1)
  10. return false;
  11. if (n == 2)
  12. return true;
  13. if (n % 2 == 0)
  14. return false;
  15.  
  16. for (int i = 3; i <= sqrt(n); i += 2) {
  17. if (n % i == 0) return false;
  18. }
  19. return true;
  20. }
  21.  
  22. int main() {
  23. int numProcs, size;
  24. cout << "Num Processes: ";
  25. cin >> numProcs;
  26. cout << "Size: ";
  27. cin >> size;
  28.  
  29. vector<bool> primes((size - 2) / 2 + 1, false); // The total number of prime numbers in the primes array, as it is only odd numbers starting from 3
  30.  
  31. #pragma omp parallel for schedule(dynamic) num_threads(numProcs)
  32. for (int i = 3; i <= size; i += 2) {
  33. if (isPrime(i)) {
  34. primes[(i - 3) / 2] = true;
  35. }
  36. }
  37.  
  38. cout << "Prime numbers up to " << size << ":\n";
  39. cout << 2 << " "; // Since 2 is the only even prime number
  40. for (int i = 0; i < primes.size(); i++) {
  41. if (primes[i]) {
  42. cout << i * 2 + 3 << " ";
  43. }
  44. }
  45. cout << endl;
  46.  
  47. return 0;
  48. }
Success #stdin #stdout 0.01s 5300KB
stdin
4 25
stdout
Num Processes: Size: Prime numbers up to 25:
2 3 5 7 11 13 17 19 23