#!/usr/bin/env python #encoding=utf-8 sum=0 for n in range(1,1001): for i in range(1,n+1): if n%i==0 and i!=n: sum+=i if sum==n: print("%d是完数"%n) else: print("%d 不是"%n) 运行所有数字均不为完数
for i in range(1,n+1): if n%i==0 and i!=n: sum+=i 你求出的sum是所有能被n整除且小于n的整数之和吧。 你再看下完数的定义是它所有的真因子的和等于它本身,而不是能被n整除的所有数的和。 你算出来的那些 i 乘起来都大于 n 本身了,要找 n的所有真因子 。