看板 C_and_CPP 關於我們 聯絡資訊
我是使用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
Yshuan:我只知道{}裡macro會類似作法而已 我也想知道XD 12/17 02:36
Yshuan:是說這解答哪看到的 那個for loop我覺得怪怪的... 12/17 02:39
kight:洪維恩的C++教學手冊.... 12/17 02:40
Yshuan:應該要是 for(...){ if(){} flag = true;} 12/17 02:42
Yshuan:輸入n=37 跑出來33就錯囉~ 或著if{}裡加上i=2 初始化 12/17 02:43
Yshuan:更正 四樓的推文 那個沒有意義... 重點是i初始回2 12/17 02:44
kight:輸入37..小於37的最大質數是33沒錯阿... 12/17 02:44
Yshuan:33=3*11....... 12/17 02:45
kight:ㄟ..對耶..我笨了...sorry 12/17 02:45
kight:所以其實有沒有最外圈應該都沒有影響是嗎??感謝Yshuan,也解 12/17 02:47
kight:了我對於i值一直加上去的疑惑...初始化就沒這問題了... 12/17 02:48
kight:只是那個whlie還是想不透...XD 12/17 02:49
kight:我甚至覺得那個continue似乎也沒有存在的必要...XD 12/17 02:57
Yshuan:是的... 他求解的邏輯也非常奇怪 我不太推= = 12/17 03:09
xxxx9659:他的continue是想要跳到最外面的while 這樣解釋就通了 12/17 08:17
xxxx9659:實際上就是一個寫錯的程式 看不懂不用太在意 12/17 08:18
stupid0319:什麼書的解答這麼特別呀? 12/17 09:38
MOONRAKER:惡名昭彰的「考備建構員」 12/19 10:23