Problem 15. 偶数拆成俩素数的拆法
题目简述:
把一个偶数(值不会超过10000)拆成两个不同素数的和,求有多少种拆法。
解题思路:
先定义一个函数int prime( ),用来判断一个数是否为素数,然后只需要判断两个数的和是否为这个偶数,并调用刚刚定义的那个函数判断这两个数是否为素数即可。
细节处理:
判断两个数的和只需定义一个变量j,另一个数即为n-1,就不必判断和是否为n了。
源代码:
#include<iostream>
#include<cmath>
using namespace std;
int prime(int a)
{
for(int i=2;i<=sqrt(a);i++)
{
if(a%i==0)
return 0;
}
return 1;
}
int main()
{
int n,c;
while(cin>>n)
{
c=0;
if(n==0) break;
else
{
for(int j=2;j<n/2;j++)
{
if(prime(j)&&prime(n-j))//调用函数prime
c++;
}
}
cout<<c<<endl;
}
return 0;
}