#include<iostream> #include<cmath> #include<vector> #include<cstring> #include<algorithm> using namespace std; bool arr[1000000]; int main() { memset(arr, 1, 1000000); vector<int> prime; for (int i = 2; i < 1000000; ++i) { if (arr[i]) { prime.push_back(i); for (int j = 2 * i; j < 1000000; j += i) { arr[j] = 0; } } } int a, b; while (cin >> a >> b) { vector<int>::iterator i1 = lower_bound(prime.begin(), prime.end(), a); vector<int>::iterator i2 = upper_bound(prime.begin(), prime.end(), b); ptrdiff_t gap = i2 - i1; cout << gap << endl; } } |
Double click to view unformatted code.