View Code of Problem 103

#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.


Back to problem 103