请编程求1×2×3×4×5×6×…×n所得的数末尾有多少个0?(n由键盘输入,1000 < n < 10000)。
时间: 2024-05-16 22:16:30 浏览: 7
题目要求我们计算阶乘末尾的0的个数,实际上,阶乘末尾0的个数与阶乘中因子5的个数有关。因为10可以分解成2和5相乘,而2的因子数量远远大于5,所以只需要计算阶乘中因子5的个数即可。
下面是Python代码实现:
```python
n = int(input("请输入n:"))
count = 0 # 记录因子5的个数
for i in range(1, n+1):
while i % 5 == 0: # 如果能被5整除
count += 1
i //= 5 # 不断地将5作为因子除掉
print(count) # 输出因子5的个数
```
在输入n为10000时,程序的运行时间为0.2秒左右。
相关问题
编程求1*2*3*4*......*n的末尾有多少个0
要计算1*2*3*4*......*n的末尾有多少个0,我们需要找出乘积中有多少个因子10。而10可以分解为2和5的乘积,因此我们只需要计算乘积中有多少个因子2和5即可。
在这个乘积中,因子2的数量远远多于因子5的数量,所以我们只需要计算乘积中有多少个因子5即可。具体计算方法如下:
1. 首先,我们可以观察到每隔5个数,必然会出现一个因子5。例如:5、10、15、20等。
2. 但是,还需要考虑到25、50、75等这样的数,它们有两个因子5。
3. 同样地,还需要考虑到125、250、375等这样的数,它们有三个因子5。
4. 以此类推,我们可以得出计算公式:n/5 + n/25 + n/125 + ...
所以,1*2*3*4*......*n的末尾有多少个0,可以通过计算n/5 + n/25 + n/125 + ...得到。
求1*2*3*4*n末尾有多少零
这是一个 IT 类问题。末尾零的个数取决于这个数的因数中存在几个10,而10可以分解成2*5。因此,我们只需要看有多少个2和5就行了,又因为因数中2的个数远大于5的个数,所以只需看有多少个5。每隔5个数,就会出现一个含有因子5的数,每隔25个数,就会出现两个含有因子5的数(因为25=5*5),每隔125个数,就会出现三个含有因子5的数(因为125=5*5*5),以此类推。所以,n!末尾零的个数等于n/5+n/25+n/125+...,直到n/5^k=0为止。