python怎么判断完全数

python怎么判断完全数

作者:Elara发布时间:2026-03-25阅读时长:0 分钟阅读次数:2

用户关注问题

Q
什么是完全数?

在计算机编程中,完全数指的是什么?

A

完全数的定义

完全数是指一个正整数,其所有真因子(不包括自身的因子)相加等于该数本身。例如,6的因子是1、2和3,1+2+3=6,因此6是完全数。

Q
如何用Python代码判断一个数是否为完全数?

有没有简单的方法在Python中判断一个整数是否为完全数?

A

用Python判断完全数的代码示例

可以通过遍历该数的所有小于它的因子,累加这些因子,再比较累加和是否等于该数来判断。示例代码如下:

 def is_perfect_number(n):
     divisors_sum = 0
     for i in range(1, n):
         if n % i == 0:
             divisors_sum += i
     return divisors_sum == n

 # 测试
 print(is_perfect_number(6))  # 输出True
 print(is_perfect_number(10)) # 输出False
Q
如何优化判断完全数的算法?

直接遍历所有小于该数的数判断因子效率较低,有没有更高效的方法?

A

提高判断效率的方法

只需遍历到该数的平方根即可,因为因子成对出现。例如,当 i 是因子时,n//i 也是因子。代码改进如下:

import math

def is_perfect_number(n):
    if n <= 1:
        return False
    divisors_sum = 1
    sqrt_n = int(math.sqrt(n))
    for i in range(2, sqrt_n + 1):
        if n % i == 0:
            divisors_sum += i
            if i != n // i:
                divisors_sum += n // i
    return divisors_sum == n

# 测试
print(is_perfect_number(28))  # True
print(is_perfect_number(12))  # False