題目:
讓使用者輸入一個整數,並輸出該數是否為質數
解法:
1 | #include<iostream> |
解釋與詳細介紹
第一部分:for迴圈介紹
1 | //initial expression |
for迴圈是程式中很常出現的一個語法,通常在for前面會出現代表這個迴圈的初始設定,本題就是當程式執行到else內部才會開始執行for,而在括號中的cond-expression則代表了執行loop-expression的條件,當其為true時才會執行loop,舉例而言
1 | for(int i = 0; i < 2; i++ ) |
這個程式中的判斷標準變是以”當下的變數i”是否小於二去執行cout<<i”的指令與次數。因此在程式執行時,依序在
i=0,因為此時的i=0 < 2,因此他會先印出”0”,而後進行了i++也可寫作i=i+1,代表i值增加1
i=1,因為此時的i=1 < 2,因此他會印出”1”而後進行了i++
i=2,因為此時的i=2 !< 2,!代表”不”的意思,因此他會結束這個loop且不會印出任何東西
所以這段程式的結果便會呈現”01”。
我們很常運用for loop配合if else、while與其他迴圈去實現我們想執行的程式邏輯。
第二部分:主功能解析
由題目可得知
input:為一個整數值
output:呈現他是否為”質數”的結果,這裡我們用string(字串)的方式印出成果
我們先另x=輸入數,a,b分別作為其為”非質數”與”質數”的代表。並用第一個if條件將x=0和1的情形排除,並在else的條件中逐一判定i由2~(根號x)-1的範圍內是否有出現”任何一次”i為x因數的情況(因為質數定義為因數只有自己和1),若是有,則代表他不是質數,那就會使代表”是此i的倍數”=”非質數”的a++;否之則會使代表”不是此i的倍數”的b++,並一直重複這個過程到結束。最後再由a的值來判斷便可以得出結論。
**小技巧:**因為其最大質因數必不會超過本身開根號的答案,加上這個條件可以有效降低程式的時間複雜度,也就是使執行效率更快
第三部分:成果展示

參考資料:
https://docs.microsoft.com/zh-tw/cpp/cpp/for-statement-cpp?view=msvc-170