输入一个素数,将其分为两个素数之和

#include<stdio.h>
int judge(int a)
{
int i,j=1;
for(i=2;i<a;i++)
{
if(a%i==0)
j=0;
}
return (j);
}
void main()
{
int a,b,c;
scanf("%d",&a);
for(b=0;b<=a;b++)
for(c=0;c<=a;c++)
{
if((a=c+b)&&judge(c)&&judge(b))
printf("%d=%d+%d",a,b,c);
}
}

怎么输入都没结果出来?

第1个回答  2013-12-25
#include<stdio.h>
int judge(int a)
{
int i,j=1;
for(i=2;i<a;i++)
{
    if(a%i==0)
                j=0;
}
return j;
}
void main()
{
int a,b;
  scanf("%d",&a);
for(b=2;b<=a/2;b++)
{
if(judge(a-b)&&judge(b))
printf("%d=%d+%d\n",a,b,a-b);
    }
}

本回答被提问者采纳
第2个回答  2013-12-25
1、除了2以外,所有素数都是奇数,素数=素数1+素数2,那么从奇偶性上分析,至少有一个得是2,所以除了5=2+3,7=2+5,13=11+2,19=2+17等寥寥几组之外,其他的不可能有输出结果的!
2、if((a=c+b)&&judge(c)&&judge(b)) 《===此处错误,应该是两个等号本回答被网友采纳
相似回答