看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DevC++ 我現在在解高中生解題系統 裡面的質數問題 為了要判斷輸入的數字是否為質數 並且有可能有兩萬個數字要判斷 為了加快速度 因此有建表機制 邏輯:先判斷表內的數字有沒有能整除的 有就不是質數 如果表內沒有 再從1到X-1都整除一次看看 如果有能整除的 就不是質數 如果以上兩個條件都不行 那就是質數 將這個質數存到prime陣列裡面 以後就可以拿出來比對 餵入的資料(Input): 各種自己隨便亂打的整數 預期的正確結果(Expected Output): 如果是質數應該就會有質數出來 不是質數就會有非質數出來 錯誤結果(Wrong Output): 輸入之後毫無反應 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int prime[20000]; int number; int i=0; int j; while(1); { scanf("%i",&number); for (j=0;j<=i;j++) { if(number%prime[j]==0) { printf("非質數"); continue; } } for (j=2;j<=number;j++) { if(number%j==0) { printf("非質數"); continue; } } printf("質數"); prime[i]=number; i++; } return 0; } 補充說明(Supplement): 我認為可能是我while迴圈裡面的scanf出問題 只是不知道該怎麼改 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.27.35 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1428317539.A.207.html
EdisonX: while(1); 04/06 18:54
sos0214: %i應該要改成%d 另外i這樣值是0 04/06 18:57
sos0214: 請忽略我說的XD 是我沒看過%i的format 04/06 18:59
ChiuTW: 你的 i 不是一直都是 0 嗎 XD 04/06 19:13
ChiuTW: 我也搞錯,不要理我上面寫的 XD 04/06 19:15
最後面有i++ ※ 編輯: q10242 (1.163.27.35), 04/06/2015 19:16:06
ChiuTW: 但是 while(1); 啊XD 04/06 19:21
是分號問題嗎 改掉了 但還是一樣 囧 ※ 編輯: q10242 (1.163.27.35), 04/06/2015 19:37:44
bibo9901: while( scanf(..) != EOF ) 04/06 19:37
x000032001: 建表用篩法跑完再讀input 04/06 22:00
x000032001: for (j=2;j<=number;j++) 你最後會跟自己除 04/06 22:01
narukaze: 你的continue用法, 即使確定這數是非質數, 04/07 21:54
narukaze: 最後仍然會跑到倒數三行, 所以...會有問題. 04/07 21:55
narukaze: 另外, 依照你的敘述, prime[]內應該是i吧? 04/07 22:02
narukaze: 你參考看看吧 http://i.imgur.com/FMTYRT2.png 04/07 22:11