筛素数为啥要筛到1010,只筛到1000会WA 2和10 结果为0
查看原帖
筛素数为啥要筛到1010,只筛到1000会WA 2和10 结果为0
583586
Chen_Qing楼主2022/1/17 00:19
#include<bits/stdc++.h>
using namespace std;
int n,prime[1005],cnt;
bool notprime[1005];
long long f[1005];
int main()
{
	ios::sync_with_stdio(false);
	for(int i=2;i<=1000;++i)//这里用1000会WA 2和10,n=1000时答案是0;改成1010就可以了。为啥呢?
	{
		if(notprime[i])continue;
		prime[++cnt]=i;
		for(int j=2*i;j<=1000;j+=i)
			notprime[j]=1;
	}
	cin>>n;
	f[0]=1;
	for(int i=1;prime[i]<=n;++i)
		for(int j=prime[i];j<=n;++j)
			f[j]=f[j]+f[j-prime[i]];
	cout<<f[n];
	return 0;
}
2022/1/17 00:19
加载中...