题解 | #完全数计算#
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
def is_perfect_number(num): sum_of_num = [] for i in range(1,num//2 + 1): if num % i == 0: sum_of_num.append(i) res = 0 for j in sum_of_num: res = res + j return res == num def count_perfect_number(n): origin = 0 for num in range(1,n+1): if is_perfect_number(num): origin += 1 return origin print(count_perfect_number(int(input())))
根据完备数定义,一个数的所有约数,除了自身外,其他约数之和等于自身,那么这个数就叫完备数
从range(1,num//2+1)中遍历出所有可能的约数,判断num%i==0,就可以精确的的得到i是否为num的约数,再把他放到一个list里面最后遍历相加结果res,看是否与自身相等,若相等则记录下