hd 2098 分拆素数和

来源:互联网 发布:开淘宝保证金怎么退 编辑:程序博客网 时间:2024/06/06 00:41

                                                                    分拆素数和  

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 33049    Accepted Submission(s): 14315


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

Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
 

Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
 

Sample Input
30260
 

Sample Output
32
 
//利用素数打表
#include<stdio.h>#include<string.h>int a[10000+10]; int b[10000+10];int main(){int n,i,j,k;memset(a,0,sizeof(a));for(i = 2; i <= 10000; i ++){if(a[i] == 1)   continue;    for(j = 2 * i; j <= 10000; j += i)        a[j] = 1;}while(scanf("%d",&n)!=EOF){if(n==0)  break;for(i = 2 , j = 0;i < n;i ++)   if(a[i] != 1)   {  b[j++] = i;   }int falg=0;int l=j;for(i = 0;i < l-1; i++){ for(k = i+1;k < l; k++)    if(b[i]+b[k]==n)    {    falg++;    break;}     }printf("%d\n",falg);}return 0;}



0 0
原创粉丝点击