10的n(n>1)次方阶乘后面0的个数 有什么规律?
10^2 阶乘的后面0的个数是24
10^3 阶乘的后面0的个数是249
10^4 阶乘的后面0的个数是2499
10^5 阶乘的后面0的个数是24999
10^6 阶乘的后面0的个数是249998
10^7 阶乘的后面0的个数是2499999
10^8 阶乘的后面0的个数是24999999
10^9 阶乘的后面0的个数是249999998
10^10阶乘的后面0的个数是2499999999
。。。。。。。。。。。。。。。。
惊人的发现前面测试除了10^6! 10^9!
其余的结果均为
10^n/4-1
而两个例外的10^6 10^9
若仅此而推10^12尾数为8则又不成立 10^12!后面0的个数是10^12/4-1
但是这里的结果又惊人的相似
不只有何科学道理?请高手解答
下面是本人写java的实现程序(此程序我只测定10^9),如要测试建议用C(此程序本人测到10^14)
//File Name:Factorial_zero.java
package arithmetic;
public class Factorial_zero{
long n;
long sum;
Factorial_zero(long tempN){
n = tempN;
sum = 0;
}
void SetN(long tempN){
n = tempN;
}
public void Calculate(){
long tempN,i;
for(tempN = 1;tempN <= n;tempN++){
i = tempN;
while((i%5)==0){
sum++;
i = i/5;
}
}
System.out.println(sum);
}
public static void main(String args[]){
Factorial_zero temp = new Factorial_zero(10000);
temp.Calculate();
}
}
你的算法不错算发时间度少n个数量级 我的数学是越来越臭了啊
但是我现在需要知道这里面有什么规律
不看算法的实现,只从结果中观察,结果有惊人的类似,为什么如此?
还有你的哪个算法经过调试对比,前面的都一样,但是有如下问题,当把long全部替换为double的话 我的算法小数点后面全为0,而你的算法结果如下:
24.0
249.6
2499.2
24999.68
249999.36
2499999.7440000004
这是不是意味着当n大于某个数字时回出现误差便会大于实际数字,但是你的通式确实正确的,不是是什么地方出了问题,是math的方法出的问题吗?