Python的内置函数type函数可以用于判断变量的类型。整数的类型是int,所以可以通过检验
创新互联服务项目包括怀仁网站建设、怀仁网站制作、怀仁网页制作以及怀仁网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,怀仁网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到怀仁省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
type(art)==int
在你的这个思路中,可以优化的主要就是几方面:
1:求因数可以仅算到n的平方根q为止,对于n,每有一个小于q的因数,就有一个对应的大于q的因数,两者之积为n。
2:在完数函数中已经完成了求因数的工作,不需要另做一次,直接在完数函数中拼装结果即可。
3:目前来说,已知的完全数都是偶数,因此,最后那行那里可以做num+=2优化,但数学上目前还没有证明不存在奇完全数,这种做法从理论上来说是不严谨的。
实际上,当一个数比较大的时候,做因数分解是一个很费时的工作,要找更大的完数,需要更好的因数分解的方式。比如先求出所有的质因数,在使用这些质因数的组合来寻找非质因数。因为质因数必然是在质数表中,而质数表可以建立一次然后重复使用,相对一个个的试商就快得多了。
如果要进一步优化以寻找更大的完全数,那么,就需要利用更多的关于完全数的规律了,比如,除6以外,其它的完全数都是9n+1,都是p^2*q……,这些优化在你这个框架下实现就比较麻烦。
总体来说,不解决因数分解的问题,主要就是上述三种优化了。
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))
如果一个数恰好等于它的真因子之和,则称该数为“完全数” [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等等。
结果是
1
#!/usr/bin/env python3.6
def due(cost):
if cost = 3000:
return cost * 0.85
if cost = 2000:
return cost * 0.9
if cost = 1000:
return cost *0.95
return cost
cost = input('Please input total cost of the goods: ')
print(f'You should pay: {due(float(cost)):.2f}')
2
a, b, c = 1, 2, 3
n = 3
while True:
n += 1
a, b, c = b, c, (a+b+c)/2.0
if c 1200:
print(n)
break
3
def gys(m, n):
for i in range(min(m, n), 0, -1):
if m % i == n % i == 0:
return i
4
def is_wanshu(n):
yinzi = [i for i in range(1, n) if n % i == 0]
return n == sum(yinzi)