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; }
分拆素数和。
时间: 2024-10-13 18:58:18