r-阶乘后有多少个尾随零



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

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

N!=1*2*3*…*N

小心1000!有2568位数字。

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

示例:

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

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

我很困惑,因为我的一个样本测试显示:expect_equal(zeros(30(,7(

我可能误解了这项任务,但当输入为30时,后面的7个零从哪里来?

打开科学记数法后,我得到了这个:

2.6525286e+32

关闭后,我得到了这个:

265252859812191032282026086406022

您所经历的是这样的结果:为什么这些数字不相等

但在这种情况下,计算阶乘来寻找尾随零的数量并没有那么有效。

我们可以在一个数字中计算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

相关内容

  • 没有找到相关文章

最新更新