附上代码:
#include<bits/stdc++.h>
#define MAXN 100000003
using namespace std;
long long a[MAXN];
bool b[MAXN];
void ny(long long n) {
long long x = 1;
for (long long i = 2; i <= n; i++) {
if (b[i]) {
a[x] = i;
x++;
}
for (int j = 1; j <= x && a[j] * i <= n; j++) {
b[a[j] * i] = false;
if (i % a[j] == 0) break;
}
}
}
int main() {
long long L, r, m, n, num;
memset(b, true, sizeof(b));
scanf("%lld%lld", &n, &m);
ny(m);
for (int i = 0; i < n; i++) {
scanf("%lld%lld", &L, &r);
if (r > m || L < 1) {
printf("Crossing the line\n");
continue;
}
num = 0;
for (int j = 0;a[j]<=r; j++) {
num += a[j] >= L ? 1 : 0;
}
printf("%lld\n", num);
}
return 0;
}
运行时错误,但在VS上是对的,大佬们看看,谢谢啦