找1~N的完美數
題目:找1~N的完美數
難易度:容易
命題老師:未知
問題描述:
一個數如果恰好等於它的因數之和,這個數就稱為 " 完美數 " ( perfect number )。例如 6=1 + 2 + 3 ,因 1 、 2 與 3 都是 6 的因數,因而 6 是完美數。試撰寫一程式,輸入一個正整數 N ,找 1~N 的完美數。
輸入說明:
輸入一個正整數。
輸出說明:
輸出完美數。
SampleInput |
SampleOutput |
1000 |
6_28_496 |
上面sampleoutput的6 28 496本來是空格,我把它改成"_"會比較好理解
這題的某一測資結果是 TLE 這種錯誤很難處理,這已經不是我能力所及的範圍惹,就這樣吧,至少演算法是對的!!
這題會用到:
- 布林函數的應用(超實用的)
- 印出時的套路
- vector的應用
先解決判斷完美數問題!
首先我們先寫判斷是否為完美數的funcion 命名cmp,丟一整數num做判斷動作
用布林函數去做判斷動作
先宣告一vector word1塞int
迴圈27~29行從1~num如果num%i=0就把i塞給word1(word1塞的就是num的因數)
宣告整數sum並初始化為0
在迴圈31~34行做累加動作
如果num=sum就回傳true(是完美數)
否則回傳false(不是完美數
(這事函數實做,不要忘記做函數宣告)
=======
回到main主函數部分
宣告一個vector word塞完美數(印出要用)
宣告一整數x讓使用者輸入
迴圈10~14行從1~-x-1依序丟到cmp去做判斷的動作並用 bool number存
如果number=true(i是完美數)就把i丟給word存
這樣word存的就是1~x的所有完美數
迴圈15~19行做印出動作,如果i不是最後一個元素就印出空白
(這樣印到最後就不會印出空白了,最後一個元素的元素值要-1)
最後20行不要忘記endl
原始碼:
結果:
TLE錯誤這不是我程度所能及的。。至少上面演算法是絕對不會有錯的!
BUG &問題回報
可寄站內信、在底下留言或到我個人FB私下詢問