我的 80pts 代码是这样的:
#include <bits/stdc++.h>
using namespace std;
int x, y, pri[100010], pnum[100010], id, sum;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> x >> y;
if(x > y) swap(x, y);
if(x == 1) sum--;
for(int i = 2; i <= y; i++) {
if(!pri[i]) pnum[++id] = i;
for(int j = 1; j <= id && i * pnum[j] <= y; j++) {
pri[i * pnum[j]] = 1;
if(i % pnum[j] == 0) break;
}
}
for(int i = x; i <= y; i++) if(!pri[i]) sum++;
cout << sum;
return 0;
}
RE on #3. 而我把数组再开大 10 倍就过了,这是因为题目里有什么陷阱我没注意到还是数据问题??
求解决!!