完数(Perfect number)是指一个数等于除它本身以外的所有因子之和,例如6就是完数,因为6=1+2+3。
在Python中,可以使用下面的代码判断一个数是否为完数:
def is_perfect_number(num): sum = 0 for i in range(1, num): if num % i == 0: sum += i if sum == num: return True else: return False
使用该函数,可以找出指定范围内的所有完数:
def find_perfect_numbers(start, end): perfect_numbers = [] for i in range(start, end+1): if is_perfect_number(i): perfect_numbers.append(i) return perfect_numbers
调用该函数,例如:find_perfect_numbers(1, 1000),就可以找出1到1000之间的所有完数。
需要注意的是,完数并不是每个整数都有的特性,目前已知的完数只有6、28、496、8128等若干个,而且它们都是偶数。因此,如果需要找到某个范围内的完数,应当先筛选出偶数。