[問題] 找小於輸入值的最大質數的語法

看板C_and_CPP作者 (山中雜草一隻鹿)時間13年前 (2010/12/17 02:30), 編輯推噓5(5013)
留言18則, 5人參與, 最新討論串1/4 (看更多)
我是使用Dev C++而且是初學者.. 最近寫到這個題目.. 想了老半天想不出來...後來看到解答的Code..我有些疑問.. 他的解答如下.. #include <iostream> #include <cstdlib> using namespace std; int main(void) { int i,n=45; bool flag=false; int prime=n-1; while(!flag) { for(i=2;i<prime;i++) if(prime%i==0) // not a prime { prime--; continue; } flag=true; } cout << "小於" << n << "的最大質數為" << prime << endl; system("pause"); return 0; } 只是我想請問.. 我發現有沒有While迴圈似乎對整個算出來的解答沒有影響 我自己有將這code改寫成沒有while回圈而且可以自己輸入任意數.. 但隨便輸入一個數算出來的最大質數也都是正確的.... 所以我一直在思考這個迴圈的存在意義.. 因為看來他執行完裡面的for迴圈就會直接把flag改成true然後跳出while迴圈 那...它這邊為何要加一個While迴圈呢??? 懇請高手幫忙解答..。非常感謝.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.11.71

12/17 02:36, , 1F
我只知道{}裡macro會類似作法而已 我也想知道XD
12/17 02:36, 1F

12/17 02:39, , 2F
是說這解答哪看到的 那個for loop我覺得怪怪的...
12/17 02:39, 2F

12/17 02:40, , 3F
洪維恩的C++教學手冊....
12/17 02:40, 3F

12/17 02:42, , 4F
應該要是 for(...){ if(){} flag = true;}
12/17 02:42, 4F

12/17 02:43, , 5F
輸入n=37 跑出來33就錯囉~ 或著if{}裡加上i=2 初始化
12/17 02:43, 5F

12/17 02:44, , 6F
更正 四樓的推文 那個沒有意義... 重點是i初始回2
12/17 02:44, 6F

12/17 02:44, , 7F
輸入37..小於37的最大質數是33沒錯阿...
12/17 02:44, 7F

12/17 02:45, , 8F
33=3*11.......
12/17 02:45, 8F

12/17 02:45, , 9F
ㄟ..對耶..我笨了...sorry
12/17 02:45, 9F

12/17 02:47, , 10F
所以其實有沒有最外圈應該都沒有影響是嗎??感謝Yshuan,也解
12/17 02:47, 10F

12/17 02:48, , 11F
了我對於i值一直加上去的疑惑...初始化就沒這問題了...
12/17 02:48, 11F

12/17 02:49, , 12F
只是那個whlie還是想不透...XD
12/17 02:49, 12F

12/17 02:57, , 13F
我甚至覺得那個continue似乎也沒有存在的必要...XD
12/17 02:57, 13F

12/17 03:09, , 14F
是的... 他求解的邏輯也非常奇怪 我不太推= =
12/17 03:09, 14F

12/17 08:17, , 15F
他的continue是想要跳到最外面的while 這樣解釋就通了
12/17 08:17, 15F

12/17 08:18, , 16F
實際上就是一個寫錯的程式 看不懂不用太在意
12/17 08:18, 16F

12/17 09:38, , 17F
什麼書的解答這麼特別呀?
12/17 09:38, 17F

12/19 10:23, , 18F
惡名昭彰的「考備建構員」
12/19 10:23, 18F
文章代碼(AID): #1D2bhEtY (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1D2bhEtY (C_and_CPP)