xqzz.net
当前位置:首页 >> python求解一个数的阶乘有几个零 >>

python求解一个数的阶乘有几个零

n! = 1*2*3*4**n 没有什么推导吧 就是乘出来的

n = int(input("输入一个数字 :")) s = 0 n1 = n while n > 0: s = s + n // 5 n //= 5 print(n1,'!末尾有', s, '个0')

def getDigits(data): digits = [] while data / 10: digits.append(data % 10) data /= 10 digits.append(data) print digits return digitsdef sumNfabric(data): digits = getDigits(data) digits.sort() print digits sumOfDigitsFabric = 0 fabric = 1 for i in xrange(1,

用count()方法,正好满足你的要求.比如:补充:count方法在python中是各种类型对象一般都有的方法,仿照上面的代码就行.格式:对象名.count(你想计算其出现次数的元素)

import matplotlib.pyplot as plt n = 5 #自定义来最自大阶乘知值道r = []for i in range(1, n+1):temp = 1for j in range(1, i + 1):temp = temp * jr.append(temp)fig = plt.figure()ax = fig.add_subplot(111)ax.scatter(list(range(1, n+1)), r)plt.show()

用!表示阶乘,不重置的话,计算出来的是1!+1!2!+1!2!3!+1!2!3!4!+1!2!3!4!5!, 所以是34863.因为不重置,每次都在前一项的基础上乘了一个i!,但是我们只需要在前一项的基础上乘以i就行了,所以多乘了.重置的话,虽然是正确的,但是多此一举嘛,搞什么二重循环?觉得cpu太快了么?已经算好4!了,算5!的阶乘,只需要在4!上乘以5就行了,非得重置为1,然后再乘1 2 3 4 5,太浪费了……正常的写法应该是:int n=0, a=1;for (int i=1; i<=5; i++){ a*=i; n+=a;}

num = 1 for i in range(1,100): num *= i s = str(num).count("0") print s结果:28

total = 1 for num in range(1,101): if num % 2 == 0: total = total * num print(total)

#python 3.6.4 sum = 0 temp=1 shu = int(input("请输入所求的一个数bai阶乘倒数du的累加和:zhi ")) for i in range(1, shu+1): temp=temp*i sum=sum+1.0/temp print("1!+2!+..+{0}={1}".format(shu,sum)) 测试dao: 请输入所求的一个数

n,a=eval(input()) s=1 for i in range(1,n+1):s=s*i for k in range(1,n):ak=a**k aj=a**(k+1) if s%ak==0 and s%aj!=0:break print(k)

网站首页 | 网站地图
All rights reserved Powered by www.xqzz.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com