用Python函数求完数 如何用python求完数

求完全数的python语句# !/usr/bin/python27
# coding: utf8
'''
计算完美数(完全数)
'''
for n in range(1,1000):
nlist = [i for i in range(1,n) if n%i == 0]
if sum(nlist) == n:
print ''.join([str(n),'=',' '.join([str(n) for n in nlist])])
运行结果:
6=1 2 3
28=1 2 4 7 14
496=1 2 4 8 16 31 62 124 248
或者这样:
print [n for n in range(1,1000) if sum([i for i in range(1,n) if n%i == 0]) == n]
结果:
[6, 28, 496]
python 8个完数 运算超时?在你的这个思路中用Python函数求完数,可以优化的主要就是几方面用Python函数求完数:
1用Python函数求完数:求因数可以仅算到n的平方根q为止,对于n , 每有一个小于q的因数 , 就有一个对应的大于q的因数 , 两者之积为n 。
2:在完数函数中已经完成用Python函数求完数了求因数的工作,不需要另做一次,直接在完数函数中拼装结果即可 。
3:目前来说,已知的完全数都是偶数,因此,最后那行那里可以做num =2优化,但数学上目前还没有证明不存在奇完全数,这种做法从理论上来说是不严谨的 。
实际上,当一个数比较大的时候 , 做因数分解是一个很费时的工作,要找更大的完数,需要更好的因数分解的方式 。比如先求出所有的质因数,在使用这些质因数的组合来寻找非质因数 。因为质因数必然是在质数表中 , 而质数表可以建立一次然后重复使用,相对一个个的试商就快得多了 。
如果要进一步优化以寻找更大的完全数,那么,就需要利用更多的关于完全数的规律了,比如,除6以外,其它的完全数都是9n 1,都是p^2*q…… , 这些优化在你这个框架下实现就比较麻烦 。
总体来说,不解决因数分解的问题 , 主要就是上述三种优化了 。
如何在python用函数求出2至100之间的完全数?a=range(1,101)
b=range(1,101)
result=[]
for i in a:
tmp=[]
for k in b:
if ki:
if not i%k:
tmp.append(k)
else:
continue
else:
break
【用Python函数求完数 如何用python求完数】count=0
for m in tmp:
count=count m
if count==i:
result.append(i)
else:
continue
print(result)
完全数——Python完全数
如果一个数恰好等于它的因子之和 , 则称该数为“完全数”,又称完美数或完备数 。
例如:第一个完全数是 6,它有约数 1、2、3、6 , 除去它本身 6 外,其余 3 个数相加,1 2 3=6 。
第二个完全数是 28,它有约数 1、2、4、7、14、28,除去它本身 28 外,其余 5 个数相加,1 2 4 7 14=28 。
用Python函数求完数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于如何用python求完数、用Python函数求完数的信息别忘了在本站进行查找喔 。

    推荐阅读