package 数字问题;
public class 阶乘零数 {
/**
* 计算阶乘n!结果中0的个数
* @param n 阶乘的末数
* @return 阶乘n!结果中0的个数
*/
public static int zeroCount0(int n) {
int ret = 0;
// 计算n!中因子5的个数,就是n!末尾0的个数
for (int i = 1; i <= n; i++) {
int j = i;
while (j % 5 == 0) {
ret++;
j /= 5;
}
}
return ret;
}
/**
* 计算阶乘n!结果中0的个数
* @param n 阶乘的末数
* @return 阶乘n!结果中0的个数
*/
public static int zeroCount1(int n) {
// 0的个数=[n/5]+[n/(5^2)]+...
// [n/5]表示不大于n的数中5的倍数贡献一个5
// [n/(5^2)]表示不大于n的数中5^2的倍数再贡献一个5
// ....
int ret = 0;
while (n != 0) {
ret += n / 5;
n /= 5;
}
return ret;
}
}
数字问题之阶乘零数问题<Java实现>
最新推荐文章于 2021-04-21 19:14:39 发布