#38115: python 解題概念


super7@gm.ocu.edu.tw (賴麒祐)

學校 : 僑光技術學院
編號 : 251759
來源 : [59.126.209.172]
最後登入時間 :
2024-02-05 21:32:02
d010. 盈數、虧數和完全數 -- Sagit's C++ 程式設計 | From: [114.46.218.104] | 發表日期 : 2023-10-27 13:37

這題就是求 n 的 "真因數 總和" 和 n 自己比較, 會有 盈數、虧數、完全數 三種

(1). 先 nsum = 1, 大於 1 以上的數, 真因數都有個 1, 所以總和都會先加 1

(2). 迴圈 從 2 跑到 (n 平方根) 即可

     for x in range(2, int(n ** 0.5) + 1)

(3) 如果 n % x == 0 就要進行 加總, 但有個問題, 要扣掉重複計算出的 因數,

     例如 9 = 3 * 3, 但是 3 不能加總 兩次.

     Q = n // x

     比較 Q 跟 x 相同的話 ( 就像 3 = 9 // 3 ), 就只能 nsum = nsum + x

     如果 Q 跟 x 不同 ( 如: 5 = 10 // 2 ), 那就要 nsum = nsum + x + Q

(4) nsum 在去跟 n 比較結果

 
ZeroJudge Forum