杭电(hdu)2098 分拆素数和

来源:互联网 发布:大数据专业 编辑:程序博客网 时间:2024/05/07 10:32

分拆素数和

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


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

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

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

Sample Input
30260
 

Sample Output
32
 
运用素数筛选法,便可轻松的将此题AC了。
代码如下:
#include <iostream>#include <cstring>using namespace std; bool prime[10001];void find_prime(){memset(prime,true,sizeof(prime));prime[0]=prime[1]=false;for(int i=2;i<=100;i++){for(int j=i*2;j<=10000;j+=i)    prime[j]=false;}}int main(){    int n,count,i;    find_prime();    while(scanf("%d",&n)&&n)    {        if(n<=3)        {            printf("0\n");            continue;        }        count=0;        for(i=2;i<=n/2;i++)        if(prime[i]==true&&prime[n-i]==true)        {           if(i!=n-i)           count++;        }         printf("%d\n",count);    }}


0 0
原创粉丝点击