分拆素数和
题目
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
#include<bits/stdc++.h>
using namespace std;
bool sushu(int x){//判断是否是素数的函数,挺简单的,数大了就不好算了
for(int i=2;i<x;i++){
if(x%i==0)
return 0;
}
return 1;
}
int main()
{
int m;
while (cin>>m)
{
int b;
int sum=0;
if(m==0)return 0;
// int n=m/2;
for(int i=2;i<=m/2;i++){//2是最小的素数//算到m/2就可以包括所有的两个数的和,然后再判断这两个数是否是素数并且不相等。
b=m-i;
if(sushu(i)&&sushu(b)&&i!=b)sum++;
}
cout<<sum<<endl;
}
}