HDU 2089 分拆素数和 (素数打表)

来源:互联网 发布:数据挖掘的特点 编辑:程序博客网 时间:2024/05/16 06:41

分拆素数和

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



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

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

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

Sample Input
30260
 

Sample Output
32


 题目链接:HDU 2089 分拆素数和


代码:

#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int M=15000;bool num[M];void init_prime()//素数打表{    memset(num, 1, sizeof(num));    num[0]=num[1]=0;    for(int i=2;i<=M;i++)    {        if(num[i])        {            for(int j=2*i;j<=M;j+=i)            num[j]=0;        }    }}int main(){    init_prime();    int m;    while(cin>>m&& m)   {            int sum=0;        for(int i=3; i<=m/2; i++)        {        if(num[i]&& num[m-i]&& (i!=(m-i)))                                 ++sum;        }        cout<<sum<<endl;   }    return 0;}


原创粉丝点击