SuzumiyaSAMA 2015-11-13 02:44 采纳率: 92.3%
浏览 1717
已采纳

程序的循环无法退出,不能获得结果,求解

//判断一个偶数是哪两个素数之和
#include
#include
#include
int judgement(int k);
int main(void)
{
int INPUT, add1, add2, result;
add1 = 2;
printf("Please enter an even number bigger than 6:\n");
scanf("%d", &INPUT);

while (add1 < INPUT) {
    add1 = judgement(add1);                                           //用judgement函数自小到大依次获取add1
    for (add2 = 2; add2 < INPUT; add2 = judgement(add2)) {            //用judgement函数自小到大依次获取add2
        result = add1 + add2;
        if (result == INPUT) {
            printf("%d=%d+%d", INPUT, add1, add2);
            goto end;
        }
    }
}
printf("%d=1+%d", INPUT,INPUT-1);

end:system("pause");
return 0;
}

int judgement(int k) //judgement函数
{
int rest, i;
rest = 1;
next:for (i = 2; rest != 0 ; i++)
rest = k%i;
if (i == k)
return k;
else {
k++;
goto next;
}
}

  • 写回答

3条回答 默认 最新

  • havedream_one 2015-11-13 06:37
    关注

    代码没有条理,再者尽量不要用goto语句,使用break,和continue一般就可以控制循环了
    程序思路:
    遍历每一个比input小的数add1(for循环),如果这个数是素数,判断input-add1是否是素数,是的话就找到了;继续找下一对

     int add1=2,add2=2,input,result;
    
            for(add1 = 2; add1 < input; add1++){
                //是素数
                if(judgement(add1)){
                    //判断input - add1 是否是素数
                    if(judgement(input - add1)){
                        printf("%d + %d = %d",add1,input - add1,input);
                    }
                }
            }
            int judgement(int k) //judgement函数
            {
                int i = 2;
                for(i = 2; i <= k/2; i++){
                    if(k % i == 0){
                        //不是素数
                        return 0;
                    }
                }
                return 1;
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用