程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> for-程序的循環無法退出,不能獲得結果,求解

for-程序的循環無法退出,不能獲得結果,求解

編輯:編程綜合問答
程序的循環無法退出,不能獲得結果,求解

//判斷一個偶數是哪兩個素數之和
#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;
}
}

最佳回答:


代碼沒有條理,再者盡量不要用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;
        }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved