主题:[讨论]1000! 尾部有多少个零
asymptotic
[专家分:16630] 发布于 2010-05-28 23:37:00
编程练习: 1000 的阶乘,尾部有多少个零?
当然,算法是第一位的。
回复列表 (共4个回复)
沙发
yeg001 [专家分:14390] 发布于 2010-05-29 13:21:00
算法的话, 我想对统计1到1000一共有多少个因数2和因数5, 然后数量少的决定结果有多少个零.
板凳
xiechaoming [专家分:0] 发布于 2010-05-29 16:47:00
这个问题本人曾经算过它的精确值,呵呵,上本科的时候闲的没事干,编程序玩的时候做的。我记得这个题目是我在一本类似于趣味程序设计的书上看到的,很老的书了。当时编出来过,至于算法吗,呵呵,忘干净了,不好意思
3 楼
asymptotic [专家分:16630] 发布于 2010-05-29 21:47:00
计算 N! 末尾零的个数:因为偶数足够多,所以只要计算质因数 5 的个数,
程序如下:
program main
implicit none
integer, parameter:: N = 1550
! calculate how many zeros are there in the N factorial's tail
integer:: NL ! max{NL, satisfy 5 ** NL < N}
integer:: i ! for loop
integer:: NM
integer:: NZ ! No. of Zero
NL = int(Log(real(N)) / Log(5.0))
NZ = 0
NM = N
do i = 1, NL, 1
NM = NM / 5
NZ = NZ + NM
end do ! i
write(*, *) "Zero No.: ", NZ
stop
end program main
抛砖引玉,方家指正!
4 楼
weixing1531 [专家分:2580] 发布于 2010-05-30 16:35:00
只要计算质因数 5 的个数
好算法!
http://bbs.pfan.cn/post-313132.html
N=100时有NZ=24
100的阶乘结尾刚好有24个0
我来回复