求一个数阶乘的后面连续0的个数

简介:   对于一个数n的阶乘 n! ,计算其后面有几个连续的零。   我们知道,10 = 2 * 5。每一个 2 与一个 5 相乘,结果就增加一个零。所以求 n! 后面的连续零的个数,其实就是求其中相乘的数含有因子每对因子 2 与 5  的个数。

  对于一个数n的阶乘 n! ,计算其后面有几个连续的零。

  我们知道,10 = 2 * 5。每一个 2 与一个 5 相乘,结果就增加一个零。所以求 n! 后面的连续零的个数,其实就是求其中相乘的数含有因子每对因子 2 与 5  的个数。又因为从1到某个数,所含 2 的个数比 5 多,所以问题就可以进一步简化到求含有因子5的个数。
 
  JAVA实现代码如下:
Code:
  1. static int zeroCount ( int n) {  
  2.     int counter = 0;  
  3.     forint i = 5,m; i <= n; i += 5) {  
  4.         m = i;  
  5.         while ( m % 5 == 0) {  
  6.             counter++;  
  7.             m /= 5;  
  8.         }  
  9.     }  
  10.     return counter;  
  11. }  
 进一步优化算法:
Code:
  1. static int zeroCount ( int n) {    
  2.     int counter = 0;    
  3.     while ( n >= 5) {    
  4.         n /= 5;  
  5.         counter += n;  
  6.     }    
  7.     return counter;    
  8. }  
 
目录
相关文章
|
6月前
|
算法 测试技术
LeetCode-1004. 最大连续1的个数 III
LeetCode-1004. 最大连续1的个数 III
|
6月前
|
算法
给定两个数,求这两个数的最大公约数
给定两个数,求这两个数的最大公约数
|
6月前
|
人工智能 Java C++
计算逆序对数
计算逆序对数
39 0
|
6月前
leetcode-485:最大连续1的个数
leetcode-485:最大连续1的个数
47 0
|
算法
把数组里面数值排成最小的数
把数组里面数值排成最小的数
35 1
|
2月前
|
机器学习/深度学习 网络协议 Windows
几个数相加
几个数相加。
49 4
|
6月前
10.输入一个数,求这个数的阶乘
10.输入一个数,求这个数的阶乘
33 0
|
6月前
1004.最大连续1的个数
1004.最大连续1的个数
30 0
计算 100 以内的偶数累加和
计算 100 以内的偶数累加和
49 0
Leetcode——485. 最大连续 1 的个数
文章目录 1、题目 2、滑动窗口 3、一次遍历(官方题解)
Leetcode——485. 最大连续 1 的个数