请大佬指正
查看原帖
请大佬指正
1145947
zjz3199057245楼主2024/1/25 14:02
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 100000005;
bool isprime[N]; //isprime[x] true x是质数,false x不是质数

int aiprime(int n) 
{//正确标记n以内的数字的质数状态
	memset(isprime, true,sizeof(isprime));
	isprime[0] = isprime[1] = false;
	for (int i = 2; i <= n; i ++ ) {
		if (isprime[i]) {
			for (int j = 2; i * j <= n; j++) {
				isprime[i * j] = false;//这部分是将质数的倍数标记为false
			}
		}
	}
}
//	int a[N];
int main()
{
	int n,cnt=0,sum=0;//cnt 用来统计质数个数
	cin >> n;
	aiprime(n);//调用
	for (int i = 0; ; i++) {
		if (isprime[i]){
		sum+=i;
		cout<<i<<endl;
		}
		if(sum>n) break;
	}
	cout << cnt;
	return 0;
}

标准埃筛竟然没过

2024/1/25 14:02
加载中...