0
点赞
收藏
分享

微信扫一扫

HDU 2098 分拆素数和

年迈的代码机器 2022-11-10 阅读 30


把一个偶数拆成两个不同素数的和,有几种拆法呢?

Input 输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。 Output 对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。 Sample Input

30
26
0

Sample Output

3

2


简单题,日常一水

#include<cstdio>
const int N=1e4+10;
int f[N],p[N],t,n;

void init()
{
f[1]=1; t=0;
for (int i=2;i<N;i++)
{
if (!f[i]) p[t++]=i;
for (int j=0;j<t&&p[j]*i<N;j++)
{
f[p[j]*i]=1;
if (i%p[j]==0) break;
}
}
}

int main()
{
init();
while (~scanf("%d",&n),n)
{
int cnt=0;
for (int i=0;i<t;i++)
{
if (p[i]+p[i]>=n) break;
if (!f[n-p[i]]) cnt++;
}
printf("%d\n",cnt);
}
return 0;
}



举报

相关推荐

0 条评论