赞
踩
什么叫完全数(完备数)?
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28
思路:
利用欧拉公式:如果i是质数,(2^i-1)也是质数,那么(2^i-1)*(2^(i-1))就是完全数
def get_prime(n): # 判断改数字是不是素数 if n == 1: return 0 no_prime = [] for i in range(2,int(n*0.5+1)): if n % i == 0: res.append(i) if not res: return 1 else: return 0 while True: try: num = int(input().strip()) res = [] for i in range(1, num+1): if (2**i-1)*(2**(i-1)) > num: break elif get_prime(i) and get_prime(2**i-1): res.append((2**i-1)*(2**(i-1))) print(len(res)) except: break
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。