分拆素数和(数论)

来源:互联网 发布:苹果海马助手软件 编辑:程序博客网 时间:2024/05/18 03:48
B - 分拆素数和
Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u
SubmitStatusPracticeHDU 2098

Description

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

Input

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

Output

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

Sample Input

30260
 

Sample Output

32 #include <iostream>#include <cstdio>using namespace std;const int MAXN = 1e6;int prime[MAXN];bool is_prime[MAXN+1];int main(){    int num, i, j, ans;    int p = 0, n = 1000000;    for( int i = 0; i<n; i++ )        is_prime[i] = true;    is_prime[0] = is_prime[1] = false;    for(int i = 2; i<=n; i++ )    {        if(is_prime[i])        {            prime[p++] = i;            for( int j = 2*i; j<=n; j+=i )                is_prime[j] = false;        }    }    while( cin >> num && num )    {        ans = 0;        for( i=0; i<num; i++ )        {            if( prime[i]>num )                break;            for( j=i+1; j<num; j++ )            {                if( prime[j] >num )                break;                if(prime[i]+prime[j] == num)                {                    ans++;                    break;                }            }        }        cout << ans << endl;    }    return 0;}水题。。。但是做的很爽
0 0
原创粉丝点击