欧文筛,三个re两个WA,0分不知道为啥,求助大神
查看原帖
欧文筛,三个re两个WA,0分不知道为啥,求助大神
571939
A_pier楼主2021/9/22 19:56
#include<iostream>
#include<cstring>
using namespace std;

//欧拉筛求小于n的质数
void oula_countPrimes() {
	int n;
	cin >> n;
	bool isPrime[500];
	int Prime[500];
	int num = 0;
	memset(Prime, 0, sizeof(Prime));
	memset(isPrime, true, sizeof(isPrime));
	isPrime[0] = false;
	isPrime[1] = false;
	for (int i = 2; i <= n; i++) {
		if (isPrime[i]) {
			Prime[num++] = i;
		}

		for (int j = 0; j < num; j++) {
			isPrime[i*Prime[j]] = false;
			if (i%Prime[j] == 0)
				break;
		}
	}

    int i=0;
    while(n-Prime[i]>0)
    {
        cout<<Prime[i]<<endl;
        n=n-Prime[i];
        i++;
    }
	cout << num << endl;
}

int main()
{
	oula_countPrimes();

	return 0;
}
2021/9/22 19:56
加载中...