分拆素数和
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample
Inputcopy | Outputcopy |
|
|
#include <iostream>
#include <math.h>
using namespace std;
bool isp(int a)
{
for(int i = 2;i<= sqrt(a);i++)
{
if(a%i == 0) return false;
}
return true;
}
int main()
{
int num = 3,i = 1,j,n,ans;
int a[10000];
a[0] = 2;
while(num<10000)
{
if(isp(num))
{
a[i++] = num;
}
num++;
}
while(cin>>n)
{
ans = 0;
if(n == 0) break;
for(i = 0;a[i]<n;i++)
{
for(j = i+1;a[j]<n;j++)
{
if((a[i] + a[j]) == n) ans++;
}
}
cout<<ans<<endl;
}
return 0;
}