Python除以10
我想计算一个数的阶乘的尾随零。当我把这个数字除以10时,我希望最后一个零会被去掉,但事实并非如此Python除以10,python,python-3.x,division,Python,Python 3.x,Division,我想计算一个数的阶乘的尾随零。当我把这个数字除以10时,我希望最后一个零会被去掉,但事实并非如此 def fact(num): if (num==0 or num==1): return 1 else: return num*fact(num-1) def num(a): f = fact(a) count = 0 while(f%10==0): count=count+1 print(f)
def fact(num):
if (num==0 or num==1):
return 1
else:
return num*fact(num-1)
def num(a):
f = fact(a)
count = 0
while(f%10==0):
count=count+1
print(f)
f=int(f/10)
print(f)
return count
n=int(input())
while(n!=0):
a=int(input())
print(num(a))
n=n-1
您需要更换:
f=int(f/10)
与
函数中的num()。它会解决你的问题
说明:
f/10
将数字转换为浮点数
。当您将该浮点值
转换为int
时,如果是一个大数字,它将失去精度
您可以通过执行以下操作进行确认:
a = 8320987112741390144276341183223364380754172606361245952449277696409600000000000000
print(int(a/10)) # prints: 832098711274139031630889608027340070244161333703152098685794054394185233318543360
print(a//10) # prints: 832098711274139014427634118322336438075417260636124595244927769640960000000000000
您可以使用/
进行整数除法/
是浮点除法,它会失去精度。有趣的事实:数学。阶乘
是一个标准的库函数。另一个有趣的事实:num(fact(n))
只是n//5
@SanilSinaiBorkar在Python中,int
和long
之间没有区别(long
不存在)。@Demi Lune,我还没有检查/验证,但这是因为总是涉及到2和5的乘法(mod 10)(导致额外的尾随0)?
a = 8320987112741390144276341183223364380754172606361245952449277696409600000000000000
print(int(a/10)) # prints: 832098711274139031630889608027340070244161333703152098685794054394185233318543360
print(a//10) # prints: 832098711274139014427634118322336438075417260636124595244927769640960000000000000