题解 | #完全数计算#
完全数计算
http://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
完全数参考链接 链接
import math
def found_per(aaa):
#根据数学公式
perf = []
flag = 0
for i in range(2,aaa):
for j in range(2,int(math.sqrt(i)+1)):
if i % j == 0:
flag = 1
break
if flag == 0:
tp = 2 ** (i-1) * (2 ** i - 1)
if tp <= aaa:
perf.append(tp)
else:
break
flag = 0
return perf
perfect_num = found_per(500000)
while True:
try:
tp = int(input())
count = 0
for i in perfect_num:
if i <= tp:
count += 1
else:
break
print(count)
except:
break
查看1道真题和解析