首页 > 代码库 > 分拆素数和。

分拆素数和。

Description

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

Input

每行包含一个正的偶数,其值不会超过10000,个数不会超过500

Output

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

Sample Input

30

26

Sample Output

3

2

 写一个判断是素数的函数,在主函数中判断a-i与i是否都为素数即可。i的最大值为n/2,且a-i!=i.

#include <iostream>

#include <cstdio>

#include <cmath>

#include <algorithm>

using namespace std;

int prime(int n)

{       int i;   

  double t;    

if(n%2!=0||n==2)    

{     if(n==2)            

return 1;        

else       

  {          

   t=sqrt(n);           

  for(i=3; i<=t; i+=2)              

   if(n%i==0)                    

break;           

  if(i>sqrt(n))               

  return 1;            

else                

return 0;       

  }    

}

    else        

return 0; }

int main()

{   

int a;   

while(cin>>a)  

  {       int sum=0,i;     

  for(i=2;i<=a/2;i++)    

   {           if(i!=a-i)        

   {               if(prime(i)&&prime(a-i)) sum++;           }      

}       cout<<sum<<endl;    }   

return 0; }