素数拆分和

分拆素数和
把一个偶数拆成两个不同素数的和,有几种拆法呢?
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;
}

 

 

 

猜你喜欢

转载自blog.csdn.net/zhao10jain/article/details/7984310