文章
5
粉丝
0
获赞
26
访问
1.1k
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000005;
long long f[maxn];
//*******************素数筛选法********************
void func(int a) {
for (int i = 2; i <= a; i++) {
if (f[i] == 0) {
for (int j = i * 2; j <= a; j += i) {
f[j] = 1;//不是素数,标记1
}
}
}
}
int main() {
f[maxn] = { 0 };
func(maxn);
long long n,cnt;
while (scanf("%d", &n) != EOF) {
cnt = 0;
for (int i = 2; i < n; i++) {
if (f[i] == 0 ) {
&...
登录后发布评论
这个的N的范围是10^9次方,所以一次for就会超时,所以你需要思考一下,所以其实你只需遍历到sqrt(N)就可以了,更大的只需要判断N是不是素数。