065-完全数的求解
手撕代码完全数竟然写错了¶
伤心欲绝 书写1到1000的完全数
1 2 3 4 5 6 7 8 | # 完全数 for aa in range(1,1001): #求一到1000的完全数 sum = 0 #设置一个求和变量 for o in range(1,aa): #从1开始看o是不是因数,直到aa的前一个数字,自己本身是不可以的 if aa%o == 0: #如果aa对o求余是等于0的那么就是因数 sum += o #进行累加 if sum == aa: #最后判断是不是相等 print(aa) #相等就是完全数 |
执行结果:
1 2 3 | 6 28 496 |
写成函数的形式¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # -*- coding: utf-8 -*- """ Created on Thu Aug 29 19:39:34 2019 @author: zangz """ def gong_yin_shu(n): #求一个数所有的公因数 alist =[] #记录公因数 for o in range(1,n): if n%o ==0: alist.append(o) return alist # 完全数 def wan_quan_shu(n): for aa in range(1,n+1): #求一到1000的完全数 sum1 =sum( gong_yin_shu(aa)) if sum1 == aa: #最后判断是不是相等 print(aa) #相等就是完全数 |