[問題] 迴圈卡住了!!!!!

看板C_and_CPP (C/C++)作者 (cody)時間15年前 (2011/04/19 22:08), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 以下程式碼是正確的!! 而輸出時 會顯示 所有2~10000中的質數 與 共有幾個 =================================== int main(int argc, char *argv[]) { int i,a,b,c,n, pri=1, m=0; for(n=2;n<10000;n++) { for(i=2; i<n; i++) { if(n%i==0) { pri = 0; break; } } if(pri==1) { m++; printf("%d\t",n); } pri=1; } printf("\n共%d個質數\n",m); ===================== 我一直想嘗試 自己用手帶數字 但帶到n=4 就開始感覺怪怪? 我想應該是我的解讀錯誤 煩請幫忙~"~ =================(此為我解讀部份) 一開始n=2 又<10000 所以 進到第2個for i=2 但是i不小於n 所以跳出 因為n++ 所以n=3 又<10000 進入第2個for 因為前一個 不成立 所以 i=2 i<n成立 又3%2=1 (3%2!=0) 所以跳到 if(pri= =1) 則m++ 再來第3次=__= 因n++ 所以n=4 又<10000 進入第2個for 前一個成立 所以 i++ i=3 i<n成立 4%3=1 ....(但4不是質數...我這裡開始大卡) 煩請幫助!!!!! 感謝> <!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.68.164.61

04/19 22:12, , 1F
排個版吧@@"
04/19 22:12, 1F

04/19 22:18, , 2F
你的程式沒問題阿 是迴圈卡住 還是你邏輯卡住?
04/19 22:18, 2F
邏輯部分卡住了.也許是內外迴圈不理解(?) (程式步驟 順序我不明白) firejox:你的n是4 i是2的呢? ※ 編輯: super0517 來自: 203.68.164.61 (04/19 22:40) 這意思是...n=4時 i是從2開始 不是從3開始嗎? (程式步驟 順序我不明白) ※ 編輯: super0517 來自: 203.68.164.61 (04/19 22:42)

04/19 22:43, , 3F
i是3之前要是2啊...
04/19 22:43, 3F

04/19 22:44, , 4F
要不然你n=3怎麼來的
04/19 22:44, 4F

04/19 22:45, , 5F
還有n=2的情況
04/19 22:45, 5F
噢噢...我以為 n=4的時候 i就直接等於3了 (因為我以為n=3時i=2 之後就不用 用i=2) 所以當n=5時 分別會用 i=2 , i=3 , i=4 下去算@@? 若觀念還是錯誤 很不好意思> < ※ 編輯: super0517 來自: 203.68.164.61 (04/19 22:53)

04/19 22:48, , 6F
i在n加一次之後又會變成2阿
04/19 22:48, 6F

04/19 22:59, , 7F
for(i=2; i<n; i++)<-因為裡面有i=2,所以每次都會從2開始
04/19 22:59, 7F
恩!!! 了解了 謝謝兩位 麻煩你們了:) ※ 編輯: super0517 來自: 203.68.164.61 (04/19 23:12)
文章代碼(AID): #1DhPTZfn (C_and_CPP)
文章代碼(AID): #1DhPTZfn (C_and_CPP)