完全數:真因子 (不含自身) 之和等於自身。如 6 = 1+2+3、28 = 1+2+4+7+14。
def is_perfect(n: int) -> bool:
if n < 2: return False
s = 1
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
s += i
j = n // i
if j != i: s += j
return s == n
def main():
try:
n = int(input("請輸入正整數: ").strip())
print(f"{n} {'是' if is_perfect(n) else '不是'}完全數")
except ValueError:
print("輸入無效,請輸入整數")
if __name__ == "__main__":
main()
input() 回傳字串,需 int() 轉換並 try/except 捕獲非數字輸入。sqrt(n),成對累加,時間複雜度 O(√n)。n 自身,故初始和設 1 (1 是所有 n>1 的真因子)。此寫法兼顧正確性、效能與輸入健壯性,適合作業與面試白板題。