打表+求和..
#include"stdio.h"
#include"math.h"
int prime[10010];
int count;
void fun()
{
count=0;
int i,j,k;
for(i=2;i<=10000;i++)
{
k=(int)sqrt(i);
int flag=1;
for(j=2;j<=k;j++)
{
if(i%j==0)
{
flag=0;
break;
}
}
if(flag==1) prime[count++]=i;
}
}
int main()
{
int cas;
int n;
int i,l;
int sum;
fun();
while(scanf("%d",&n)!=EOF&&n)
{
int m;
m=0;cas=0;
for(l=0;l<count;l++)
{
sum=0;
if(prime[l]>n) break;
for(i=l;i<count;i++)
{
sum+=prime[i];
if(sum==n)
{
cas++;break;
}
else if(sum>n)
break;
}
}
printf("%d\n",cas);
}
return 0;
}
本文介绍了一种通过预先计算素数表并利用该表找出所有加起来等于特定数值的素数组合数量的方法。该算法首先生成一个包含所有小于10000的素数列表,然后针对每个输入值查找所有可能的素数组合。此算法适用于解决数学问题中关于素数求和的应用。
&spm=1001.2101.3001.5002&articleId=7803288&d=1&t=3&u=339592f1811846ccb3f49ec374970cdc)
2177

被折叠的 条评论
为什么被折叠?



