分拆素数和
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit
Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
bool num[10005];
void f()
{int i,j;memset(num,true,sizeof(num));num[0]=false;num[1]=false;for(i=2;i<10001;i++)if(num[i])for(j=2*i;j<10005;j+=i)num[j]=false;
}
int main()
{int ans;int a;f();while(cin>>a&&a!=0){ans=0;for(int i=a/2+1;i<a;i++){int j=a-i;if(num[j]&&num[i])ans++;}cout<<ans<<endl;}return 0;
}