C

来源:互联网 发布:linux编程手册 pdf 编辑:程序博客网 时间:2024/06/06 01:47
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30260
Sample Output

32


先把10000以内全部的素数找出来,再用这些素数去枚举要求的和;
#include<stdio.h>#include<string.h>#include<math.h>int flag[10010];int main(){int n,i,j,count;memset(flag,0,sizeof(flag));flag[0]=flag[1]=-1;for(i=2;i<sqrt(10002*1.0);i++)//素数筛选法;{if(flag[i]==0){for(j=i*i;j<10002;j+=i)flag[j]=-1;}}while(scanf("%d",&n)!=EOF&&n!=0){count=0;for(i=3;i<n/2;i++){if(flag[i]==0&&flag[n-i]==0)count++;}printf("%d\n",count);}    return 0;  }

原创粉丝点击