阶乘后有多少尾随零?

问题描述 投票:1回答:1

我正在尝试执行此编程任务:

编写一个程序,该程序将计算一个给定数字的阶乘。

N! = 1 * 2 * 3 * ... * N

小心1000!有2568位数字。

有关更多信息,请参见:http://mathworld.wolfram.com/Factorial.html

示例:]

zeros(6)= 1->6! = 1 * 2 * 3 * 4 * 5 * 6 = 720-> 1个尾随零

zeros(12)= 2->12! = 479001600-> 2个尾随零]

我很困惑,因为我拥有的示例测试之一显示了这一点:Expect_equal(zeros(30),7)

我可能会误解任务,但是当输入为30时,尾随的7个零从哪里来?

启用科学记数法后,我得到了:

2.6525286e+32

并且关闭它,我得到这个:

265252859812191032282026086406022
r math precision factorial digits
1个回答
0
投票

您正在体验的结果是:Why are these numbers not equal?]

但是,在这种情况下,计算阶乘以找到尾随零的数量并不是那么有效。

我们可以计算数量中的[[5-因子的数量(因为总是有足够的2因子与之配对并创建10因子)。此函数通过计算给定数字中的5个因子,使因子的尾随零。

tailingzeros_factorial <- function(N){ mcount = 0L mdiv = 5L N = as.integer(N) while (as.integer((N/mdiv)) > 0L) { mcount = mcount + as.integer(N/mdiv) mdiv = as.integer(mdiv * 5L) } return(mcount) }
tailingzeros_factorial(6)
 #> 1

tailingzeros_factorial(25)
 #> 6

tailingzeros_factorial(30)
 #> 7
© www.soinside.com 2019 - 2024. All rights reserved.