#include <math.h>
#include <stdio.h>
int
fun(int
a,int
*b,int
*c)//给这个函数加返回值是很必要的,不然就会有BUG存在
{
int
i,j,d,y;
for(i=3;i<=a/2;i=i+2)
{
/**************found**************/
y=1;
//错哪里?
for(j=2;j<=sqrt((double)i);j++)//这个for循环是为了求证i是不是素数,y = 0就不是,等于1就是素数
{
if(i%j==0)
y=0;
}
if(y==1)
{
/**************found**************/
d=a - i;
//错哪里?
这个地方的错误已经是很明显的了
for(j=2;j<=sqrt((double)d);j++)//这个循环跟上面的循环,作用相同
{
if(d%j==0)
{
y=0;
break;//这个地方如楼上所说,加个break是最好了
}
}
if(y==1)
{
*b=i;
*c=d;
return 1;
}
}
}
return 0;
}
main()
{
int
a,b,c;
int temp = 0;
do
{
printf("\nInput a:
");
scanf("%d",&a);
}
while(a%2);//这句话是必须输入的a是偶数,不然请重新输入
temp = fun(a,&b,&c);
if(temp)
{
printf("\n\n%d = %d + %d\n",a,b,c);
}
else
{
printf("\rThis isn\'t exist!\n");
}
}
楼主,加油!