牛客--完全数计算python

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。

它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。

例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

输入一个数字n

输出不超过n的完全数的个数

例:输入:1000    输出:3

import sys
def is_perfect_number(num):
    factors_sum = sum(i for i in range(1, num) if num % i == 0)
    return factors_sum == num

def find_perfect_numbers_in_range(start, end):
    perfect_numbers = [num for num in range(start, end + 1) if is_perfect_number(num)]
    return perfect_numbers


for line in sys.stdin:
    a = line.split()
    b = int(a[0])
    per_num = find_perfect_numbers_in_range(1,b)
    print(len(per_num))

你可能感兴趣的:(python)