python判断完数函数 python 判断完数

用python 编写一个识别完全数的程序,使用for ,尽量不使用库

按照题目要求编写的Python程序如下

创新互联建站是网站建设技术企业,为成都企业提供专业的网站设计制作、做网站,网站设计,网站制作,网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制适合企业的网站。10余年品质,值得信赖!

n=int(input("Type the number:"))

sum=0;

for i in range(1,n//2+1):

if n%i==0:

sum=sum+i

if sum==n:

print(str(n)+" is the perfect number")

else:

print(str(n)+" is not the perfect number")

源代码(注意源代码的缩进)

用Python编写程序,从键盘输入一个整数并判断该数的类别:其因数之和等于数字本身的数称为完全数?

import sys

theNum = input('请输入一个数:')

try:

theNum = int(theNum)

except ValueError:

print("请输入一个整数!")

sys.exit()

# 因子

divisor = 1

# 因子的和

divisors = 0

# 求因子的和

while divisor theNum:

if theNum % divisor == 0:

divisors += divisor

divisor += 1

if divisors == theNum:

print("{} 是完全数!\n".format(theNum))

else:

if divisors theNum:

print("{0} 是丰沛数!\n".format(theNum))

else:

print("{0} 是不足数!\n".format(theNum))

如何在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 8个完数 运算超时?

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

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

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

3:目前来说,已知的完全数都是偶数,因此,最后那行那里可以做num+=2优化,但数学上目前还没有证明不存在奇完全数,这种做法从理论上来说是不严谨的。

实际上,当一个数比较大的时候,做因数分解是一个很费时的工作,要找更大的完数,需要更好的因数分解的方式。比如先求出所有的质因数,在使用这些质因数的组合来寻找非质因数。因为质因数必然是在质数表中,而质数表可以建立一次然后重复使用,相对一个个的试商就快得多了。

如果要进一步优化以寻找更大的完全数,那么,就需要利用更多的关于完全数的规律了,比如,除6以外,其它的完全数都是9n+1,都是p^2*q……,这些优化在你这个框架下实现就比较麻烦。

总体来说,不解决因数分解的问题,主要就是上述三种优化了。


分享名称:python判断完数函数 python 判断完数
当前链接:http://pwwzsj.com/article/dogohie.html