题解 | #完全数计算#

完全数计算

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



全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务