为什么这样不行呢
查看原帖
为什么这样不行呢
244578
lucky2008楼主2021/10/7 15:48
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,f[1005];
bool is_prime(int x)
{
	if(x<=1)
		return false;
	for(int i=2;i*i<=x;++i)
		if(x%i==0)
			return false;
	return true;
}
int main()
{
	cin>>n;
	for(int i=2;i<=n;++i)
		if(is_prime(i))
			f[i]=1;//初始化 
	for(int i=2;i<=n;++i)
	{
		if(!is_prime(i))
			continue;
		for(int j=i+1;j<=n;++j)
			f[j]+=f[j-i];
	}
	cout<<f[n];
	return 0;
}
2021/10/7 15:48
加载中...