| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 248 人关注过本帖
标题:这哪里错了,本来答案应该是6,28,496,8128
只看楼主 加入收藏
蟒蛇出洞
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2021-8-19
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:6 
这哪里错了,本来答案应该是6,28,496,8128
程序代码:
def is_perfect (n):
    '''判断一个自然数是否为完美数'''
    s = 0
    for i in range(1,n):
        if n % i == 0:
            s += i
        return s == n
def main():
    '''寻找完美数'''
    for n in range(1,10000):
        if is_perfect(n):
            print(n)


if __name__ == '__main__':
    '''程序入口'''
    main()
搜索更多相关主题的帖子: main 答案 for if 完美数 
2021-08-25 17:03
蟒蛇出洞
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2021-8-19
收藏
得分:0 
2021-08-25 17:34
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:80
帖 子:901
专家分:4707
注 册:2010-3-16
收藏
得分:2 
is_perfect 里的return前面去掉一个tab。在for里直接return了。
2021-08-26 09:14
蟒蛇出洞
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2021-8-19
收藏
得分:0 
回复 2楼 蟒蛇出洞
谢谢大佬
2021-08-26 09:46
蟒蛇出洞
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2021-8-19
收藏
得分:0 
2021-09-01 18:28
蟒蛇出洞
Rank: 2
等 级:论坛游民
帖 子:27
专家分:20
注 册:2021-8-19
收藏
得分:0 
2021-09-01 18:28
傻眼猫咪
Rank: 2
等 级:论坛游民
威 望:1
帖 子:36
专家分:55
注 册:2021-8-2
收藏
得分:0 
另外一種方法:其時間複雜度更好
程序代码:
import math

def isPerfect(num):
    """ Determine whether a natural number is a perfect number """
    if num <= 0: return False
    i = 1
    s = 0
    while i <= math.sqrt(num):
        if num % i == 0:
            s += i
            if i*i != num:
                s += (num/i)
        i += 1
    return (s-num) == num



def main():
    """ Find the perfect number """
    for n in range(1,99999): # 這裡我改成更大數值做測試,完全沒有問題
        if isPerfect(n):
            print(n)


if __name__ == '__main__':
    """ Program entry """
    main()


如果想算出極大數值,可以用梅森質數:
prime = [2, 3, 5, 7, 13, 17, 19, 31] # 梅森質數
isPerfect = lambda p: (1<<(p-1))*((1<<p)-1)
for i in prime:
    print(isPerfect(i))


輸出:
程序代码:
6
28        
496       
8128      
33550336  
8589869056
137438691328
2305843008139952128


[此贴子已经被作者于2021-9-2 11:08编辑过]

2021-09-01 22:54
快速回复:这哪里错了,本来答案应该是6,28,496,8128
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.642047 second(s), 8 queries.
Copyright©2004-2021, BCCN.NET, All Rights Reserved