我试图完成以下编程任务:
编写了一个程序,该程序将计算给定数字的阶乘中尾随零的数目。
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(0(30),7)
我可能误解了任务,但是当输入为30时,尾随的7 0从何而来?
随着科学符号的开启,我明白了:
2.6525286e+32
关了它,我就明白了:
265252859812191032282026086406022
发布于 2019-11-18 23:44:42
您正在经历的是这样的结果:
但在这种情况下,计算阶乘来找出尾随零的数目并不是那么有效。
我们可以在一个数字中计算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
https://stackoverflow.com/questions/58921357
复制相似问题