wsw追妹记
时间限制: 1 Sec 内存限制: 128 MB题目描述
对于a(x)为小于等于x的素数个数;
wsw数学经常考零分,现在非常焦急,请你帮帮他吧。
输入
第一行输入一个整数t表示有t组数据。
接下来t行每行两个数字r,l(1<=l<=r<=10000000)
对于每组数字输出a(r)-a(l)样例输入
2
3 2
7 2
样例输出
1
3
解题思路
直接打表暴力。
#include <stdio.h>
#include <math.h>
int isprime[10000010];
void prime(int n) {
int i, j, m;
for (i = 0; i <= n; i++)
isprime[i] = 1;
isprime[0] = isprime[1] = 0;
m = (int)sqrt(n);
for (i = 2; i <= m; i++) {
if (isprime[i]) {
for (j = 2 * i; j <= n; j += i)
isprime[j] = 0;
}
}
}
int main() {
prime(10000000);
int n, m, i, ans, t, a, b;
scanf("%d", &t);
while (t--) {
ans = 0;
scanf("%d %d", &a, &b);
for (b++; b <= a; b++) {
if (isprime[b])
ans++;
}
printf("%d\n", ans);
}
return 0;
}