问题描述】验证哥德巴赫猜想:任意充分大的偶数,可以用两个素数之和表示。
【输入形式】一个大于2的偶数,以回车结束
【输出形式】每行一对素数,小的素数在前,以空格隔开,多组用多行表示,小的素数在前;
【样例输入】
10
【样例输出】
3 7
【样例输入】
20
【样例输出】
3 17
7 13
老哥们实在做不出来了。。。我做的都不对 初学C语言 这个该用哪个循环啊?
include <math.h>
include <stdio.h>
main( )
{
long int j,n,p,q,flagp,flagq;
printf("please input n :n");
scanf("%ld",&n );
if (((n%2)!=0)||(n<=4))
printf("input data error!\n");
else
{
p = 1 ;
do {
p = p + 1 ;
q = n - p ;
flagp = 1 ;
for(j=2;j<=(int)(sqrt(p));j++)
{
if ((p%j)==0)
{
flagp = 0 ;
break;
}
}
flagq=1 ;
for(j=2;j<=(int)(sqrt(q));j++)
{
if ((q%j)==0)
{
flagq = 0 ;
break ;
}
}
} while(flagp*flagq==0);
printf(“%d %d”,p,q) ;
}
我的代码不对。。真心求教各位老哥!
你好,用几个Sample Input试了一下你提供的代码,都可以得出一组正确答案,代码的问题在于不能输出全部符合猜想的数字组合,下面做出说明:
现给出修改建议
望采纳,欢迎追问~