#include #include #include std::vector sieve(int n) { std::vector is_prime(n + 1, 1); is_prime[0] = 0; is_prime[1] = 0; for (int i = 2; i * i <= n; i++) { if (is_prime[i]) { for (int j = i * i; j <= n; j += i) { is_prime[j] = 0; } } } return is_prime; } int main(void) { int n; std::cin >> n; std::vector> intervals; int m = 0; for (int i = 0; i < n; i++) { int a, b; std::cin >> a >> b; m = std::max(m, b); intervals.push_back(std::make_pair(a, b)); } auto primes = sieve(m); for (int i = 1; i <= m; i++) { primes[i] += primes[i - 1]; } for (int i = 0; i < n; i++) { auto [a, b] = intervals[i]; std::cout << primes[b] - primes[a - 1] << std::endl; } return 0; }