java——末尾0的个数

【题目描述】输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n =10; n! = 3628800,所以答案为2
输入描述:
输入一行,n(1<=n<=1000)
输出描述:
输出一个整数,即题目所求
输入例子
10
输出
2

题目分析:
由于0的来源是2 和5 ,但是在所有的数中以2为因数的数较多,所有在这里我们只需要考虑因子5的个数就行。

错误分析:不能以10为基准进行考虑,因为存在25中有2个因子5

方法一:

public int trailingZeroes(int n) {
	int count=0;
	while(n!=0){
		count+=n/5;
		n=n/5;
	}
	return count;
}

方法一:

public long trailingZeros(long n) {
		// write your code here
		long count = 0;
		long number= 25;
		for (long temp = 5; temp <= n; temp+=5) {
			count++;
			number= 25;
			// 判断是不是25、125、625...的倍数,并根据每次pwr的变化进行+1操作
			while (temp % number== 0) {
				count++;
				number*= 5;
			}
		}
		return count;
	}
发布了33 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lsy_666/article/details/103166925
今日推荐