Re: [問題] 新手問質數問題
※ 引述《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
09/14 11:14, 1F
→
09/14 11:15, , 2F
09/14 11:15, 2F
推
09/14 14:50, , 3F
09/14 14:50, 3F
推
09/14 20:32, , 4F
09/14 20:32, 4F
→
09/14 20:32, , 5F
09/14 20:32, 5F
推
09/14 21:33, , 6F
09/14 21:33, 6F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章