| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1662 人关注过本帖
标题:这哪里错了,本来答案应该是6,28,496,8128
只看楼主 加入收藏
蟒蛇出洞
Rank: 2
等 级:论坛游民
威 望:1
帖 子:41
专家分:22
注 册:2021-8-19
结帖率:80%
收藏
已结贴  问题点数:2 回复次数:7 
这哪里错了,本来答案应该是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
等 级:论坛游民
威 望:1
帖 子:41
专家分:22
注 册:2021-8-19
收藏
得分:0 
2021-08-25 17:34
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:216
帖 子:1479
专家分:9055
注 册:2010-3-16
收藏
得分:2 
is_perfect 里的return前面去掉一个tab。在for里直接return了。
2021-08-26 09:14
蟒蛇出洞
Rank: 2
等 级:论坛游民
威 望:1
帖 子:41
专家分:22
注 册:2021-8-19
收藏
得分:0 
回复 2楼 蟒蛇出洞
谢谢大佬
2021-08-26 09:46
蟒蛇出洞
Rank: 2
等 级:论坛游民
威 望:1
帖 子:41
专家分:22
注 册:2021-8-19
收藏
得分:0 
2021-09-01 18:28
蟒蛇出洞
Rank: 2
等 级:论坛游民
威 望:1
帖 子:41
专家分:22
注 册:2021-8-19
收藏
得分:0 
2021-09-01 18:28
傻眼猫咪
Rank: 2
等 级:论坛游民
威 望:1
帖 子:38
专家分:85
注 册: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
j2linux
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-10-7
收藏
得分:0 
http://blog.

完美数和亲和数Python和C 此博文包含图片 (2020-08-17 22:16:06)转载▼
标签: python c python多进程 python终端显色 亲和数和完美数    分类: 计算机与 Internet
2021-10-07 09:28
快速回复:这哪里错了,本来答案应该是6,28,496,8128
数据加载中...
 
   



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

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