#include <iostream>
#include <omp.h>
#include <cmath>
using namespace std;
bool isPrime(int number) {
if (number <= 1) return false;
if (number == 2) return true;
if (number % 2 == 0) return false;
for (int i = 3; i <= sqrt(number); i += 2) {
if (number % i == 0) return false;
}
return true;
}
int main() {
int I, N;
cout << "Enter the starting number (I): ";
cin >> I;
cout << "Enter the ending number (N): ";
cin >> N;
int prime_count = 0;
#pragma omp parallel for reduction(+:prime_count)
for (int i = I; i <= N; ++i) {
if (isPrime(i)) {
prime_count++;
}
}
cout << "The number of prime numbers between " << I << " and " << N << " is: " << prime_count << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8b21wLmg+CiNpbmNsdWRlIDxjbWF0aD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIGlzUHJpbWUoaW50IG51bWJlcikgewogICAgaWYgKG51bWJlciA8PSAxKSByZXR1cm4gZmFsc2U7CiAgICBpZiAobnVtYmVyID09IDIpIHJldHVybiB0cnVlOwogICAgaWYgKG51bWJlciAlIDIgPT0gMCkgcmV0dXJuIGZhbHNlOwogICAgZm9yIChpbnQgaSA9IDM7IGkgPD0gc3FydChudW1iZXIpOyBpICs9IDIpIHsKICAgICAgICBpZiAobnVtYmVyICUgaSA9PSAwKSByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgSSwgTjsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSBzdGFydGluZyBudW1iZXIgKEkpOiAiOwogICAgY2luID4+IEk7CiAgICBjb3V0IDw8ICJFbnRlciB0aGUgZW5kaW5nIG51bWJlciAoTik6ICI7CiAgICBjaW4gPj4gTjsKCiAgICBpbnQgcHJpbWVfY291bnQgPSAwOwoKICAgICNwcmFnbWEgb21wIHBhcmFsbGVsIGZvciByZWR1Y3Rpb24oKzpwcmltZV9jb3VudCkKICAgIGZvciAoaW50IGkgPSBJOyBpIDw9IE47ICsraSkgewogICAgICAgIGlmIChpc1ByaW1lKGkpKSB7CiAgICAgICAgICAgIHByaW1lX2NvdW50Kys7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgIlRoZSBudW1iZXIgb2YgcHJpbWUgbnVtYmVycyBiZXR3ZWVuICIgPDwgSSA8PCAiIGFuZCAiIDw8IE4gPDwgIiBpczogIiA8PCBwcmltZV9jb3VudCA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9CiA=