回 帖 发 新 帖 刷新版面

主题:[讨论]1000! 尾部有多少个零

编程练习: 1000 的阶乘,尾部有多少个零?
当然,算法是第一位的。

回复列表 (共4个回复)

沙发

算法的话, 我想对统计1到1000一共有多少个因数2和因数5, 然后数量少的决定结果有多少个零.

板凳

这个问题本人曾经算过它的精确值,呵呵,上本科的时候闲的没事干,编程序玩的时候做的。我记得这个题目是我在一本类似于趣味程序设计的书上看到的,很老的书了。当时编出来过,至于算法吗,呵呵,忘干净了,不好意思

3 楼

计算 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 楼

只要计算质因数 5 的个数

好算法!

http://bbs.pfan.cn/post-313132.html

N=100时有NZ=24

100的阶乘结尾刚好有24个0

我来回复

您尚未登录,请登录后再回复。点此登录或注册