python函数求完数 python中求完数

用python算完全数之和的方法?

def main(n,high):

从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供成都网站制作、成都做网站、网站策划、网页设计、主机域名、网络空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。

x=0

perfectnum=[]

while n=high:

total=0

for t in range(n//2,0,-1):

if n%t==0:

total+=t

if totaln or (totaln and t==1):

break

else:

x+=n

perfectnum.append("%d"%n)

n+=1

return (perfectnum,x)

if __name__=='__main__':

perfectnum,total=main(2,20000)

print("%s = %d"%(' + '.join(perfectnum),total))

python 8个完数 运算超时?

在你的这个思路中,可以优化的主要就是几方面:

1:求因数可以仅算到n的平方根q为止,对于n,每有一个小于q的因数,就有一个对应的大于q的因数,两者之积为n。

2:在完数函数中已经完成了求因数的工作,不需要另做一次,直接在完数函数中拼装结果即可。

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

count=0

for m in tmp:

  count=count+m

if count==i:

  result.append(i)

else:

  continue

print(result)

求完全数的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]

找出1000以内的所有完数python

如果一个数恰好等于它的真因子之和,则称该数为“完全数” [2]  。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。

例如:第一个完全数是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。第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。

结果是


网站栏目:python函数求完数 python中求完数
链接分享:http://hbruida.cn/article/dodhgoo.html