Re: [問題] 新手問質數問題

看板C_and_CPP (C/C++)作者 (晃阿晃阿)時間16年前 (2009/09/14 11:08), 編輯推噓4(402)
留言6則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《MontaEllis8 (萌塔愛麗絲)》之銘言: : 以下是C語言教學手冊某一題的解答 : 內容是找出小於所輸入數字的最大質數 : 但是我發現輸入某些數 印出來的卻不是質數 ex:輸入28,印出來25 : 除此之外還有其他數字也是一樣 : 我檢查很久找不出有什麼錯誤= = : 希望板上的朋友能幫我看一下 謝謝 : #include <stdio.h> : #include <stdlib.h> : int main(void) : { : int i,num,prime,flag=0; : printf("請輸入一個整數: "); : scanf("%d",&num); : prime=num-1; : while(flag!=1) : { : for(i=2;i<prime;i++) : if(prime%i==0) /* not a prime */ : { : prime--; 在這裡加上了 i=2; 之後問題就解決了 這裡作者以為 continue 之後會直接跳到下一個while迴圈 但是其實只是跳到下一個for迴圈 i值沒有回到 2 所以輸入28的時候會發現 27可以被3整除 26可以被13整除 但是13之後沒有數可以整除25 導致誤判 遇到這種問題只要把數值印出來就可以判斷 : continue; : } : flag=1; : } : printf("小於%d 的最大質數為%d\n",num,prime); : system("pause"); : return 0; : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.216.142

09/14 11:14, , 1F
看懂了, 被continue誤導到了XD 原po和原文推文的h大理解
09/14 11:14, 1F

09/14 11:15, , 2F
能力真強....:)
09/14 11:15, 2F

09/14 14:50, , 3F
覺得這種 code 的 style 和流程不好, 不直觀
09/14 14:50, 3F

09/14 20:32, , 4F
的確 還是把判斷質數和找最大質數的邏輯分開來比較好看
09/14 20:32, 4F

09/14 20:32, , 5F
一樓一定是軟體工程太強 所以看不慣這種奇怪的程式碼XD
09/14 20:32, 5F

09/14 21:33, , 6F
軟體工程!?那是什麼??可以吃嗎!!??
09/14 21:33, 6F
文章代碼(AID): #1AhRES1I (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AhRES1I (C_and_CPP)