求改
查看原帖
求改
705170
longtong楼主2022/11/14 15:01
#include<iostream>
#include<cstring> 
#include<cmath>
using namespace std;
long long W[100005],dp[100005];

bool Prime(int x)
{
	for(int i=2;i*i<=x;i++)
	{
		if(x%i==0)return 0;
	}
	return 1;
}

int main()
{
	long long num;
	cin>>num;
		long long sum=0;
		for(int i=2;i<=1005;i++)
		{
			if(Prime(i))
				W[++sum]=i;
		}
		memset(dp,0,sizeof(dp));
		dp[0]=1;
		for(int i=1;i<=sum;i++)
			for(int j=W[i];j<=200;j++)
			{
				dp[j]+=dp[j-W[i]];
//				cout<<" w "<<W[i];
//				cout<<" dp "<<dp[j]<<endl;
			}
		cout<<dp[num]<<endl;
	return 0;
}
2022/11/14 15:01
加载中...