我的代码: frommathimportsqrt# sqt=sqrt(12)# print(int(sqt))foriinrange(10001):sum=0sqt=int(sqrt(i))+1forjinrange(2,sqt):ifi%j==0:sum=j+i//j+sumifi==sum+1andi!=1:print(f'{i}是完美数') 网上的代码: # 这是网上的写法,效率很慢,上面那个需要30多秒,下面这个1分钟算不出来。
那么当我们找到正因子2和4时,我们用28/2,28/4,即可得到正因子14和7. 值得注意的是如果这时再用28/7 = 4,那么将得到一个重复的正因子,我们把所有正因子累加后这个重复的正因子就会影响是否为完美数的判断。 那么我们什么时候停止使用数n/正因子这一步骤呢? 设数n有正因子d1,d2。 由数n/d1 = d2可知...
以下是用Python求解1到10000所有完美数的代码:def is_perfect_number(num):factors = []for i in range(1, num):if num % i == 0:factors.append(i)if sum(factors) == num:return True return False perfect_numbers = []for i in range(1, 10001):if is_perfect_number(i):perfect...