[問題] While新手問題

看板C_and_CPP作者 (黑田祐司)時間9年前 (2015/04/06 18:52), 9年前編輯推噓1(1012)
留言13則, 6人參與, 最新討論串1/1
開發平台(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

04/06 18:54, , 1F
while(1);
04/06 18:54, 1F

04/06 18:57, , 2F
%i應該要改成%d 另外i這樣值是0
04/06 18:57, 2F

04/06 18:59, , 3F
請忽略我說的XD 是我沒看過%i的format
04/06 18:59, 3F

04/06 19:13, , 4F
你的 i 不是一直都是 0 嗎 XD
04/06 19:13, 4F

04/06 19:15, , 5F
我也搞錯,不要理我上面寫的 XD
04/06 19:15, 5F
最後面有i++ ※ 編輯: q10242 (1.163.27.35), 04/06/2015 19:16:06

04/06 19:21, , 6F
但是 while(1); 啊XD
04/06 19:21, 6F
是分號問題嗎 改掉了 但還是一樣 囧 ※ 編輯: q10242 (1.163.27.35), 04/06/2015 19:37:44

04/06 19:37, , 7F
while( scanf(..) != EOF )
04/06 19:37, 7F

04/06 22:00, , 8F
建表用篩法跑完再讀input
04/06 22:00, 8F

04/06 22:01, , 9F
for (j=2;j<=number;j++) 你最後會跟自己除
04/06 22:01, 9F

04/07 21:54, , 10F
你的continue用法, 即使確定這數是非質數,
04/07 21:54, 10F

04/07 21:55, , 11F
最後仍然會跑到倒數三行, 所以...會有問題.
04/07 21:55, 11F

04/07 22:02, , 12F
另外, 依照你的敘述, prime[]內應該是i吧?
04/07 22:02, 12F

04/07 22:11, , 13F
04/07 22:11, 13F
文章代碼(AID): #1L8cLZ87 (C_and_CPP)