分拆素数和
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
首先建立素数表,在进行查找所需的.........
#include<iostream>
using namespace std;
/*#define N 10002
int a[N],chongz[N];
int i,j;
void sushu()
{
for(i=1;i<=N;i++)
chongz[i]=1; chongz[1]=0;
for(i=2;i<=N;i++)
{
if(chongz[i]==1)
{
j=i+i;
while(j<=N)
{
chongz[j]=0; j+=i;
}
}
}
j=1;
for(i=2;i<=N;i++)
if(chongz[i]==1)
{
a[j++]=i;
}
}
int main()
{
int n,t;
sushu();
while(cin>>n,n)
{
t=0;
for(i=1;a[i]<=n/2;i++)
{
if(chongz[n-a[i]]==1) t++;
}
if(n%2==0 && chongz[n/2]==1)
t--;
cout<<t<<endl;
}
return 0;
}*/
int Prime(int n)//把偶数T出来
{
int flag=1;
for(int i=2;i*i<=n;i++)
if(n%i==0)
{
flag=0;
return 0;
}
if(flag==1)
return 1;
return -1;
}
int main()
{
int j,n;
while(cin>>n,n)//输入n的值
{
j=0;
for(int i=2;i<n/2;i++)
{
if(Prime(i)==1&&Prime(n-i)==1)
{
j++;cout<<i<<" "<<n-i<<endl;
}
}
cout<<j<<endl;
}
return 0;
}