不要被阶乘吓倒
2012-10-20 19:21
330 查看
public class JieCheng { /** * a 的阶乘最后有几个0 * 积为0 只有一种情况,那就是2*5才会为10,这样就产生了一个0 * 因此就是求 a的阶乘里面的因子2的个数与因子5的个数,然后取两者 * 中小的那个,因为5的频率比2要小,所以只求5的就可以了 * @param a */ public static void execute(int a){ int count = 0; for(int i=2;i<=a;i++){ int j = i; while(j%5==0){count++;j/=5;} } System.out.println(count); } /** * n的阶乘中 因子k 的个数有个公式:z = n/k+n/k2+n/k3+...+n/kx * @param a */ public static void execute2(int a){ int count = 0; while(a!=0){ count+= a/5; a=a/5; // 多次边除就相当于平方了 } System.out.println(count); } /* * 求 n 的阶乘二进制表示最低位的1的位置, * 想知道n!二进制表示的最低位1的位置,就得知道最后有几个0,什么时候后面是0? * 只有当 k/2==0 时,二进制最后会补0,所以就是求 n!中因子2的个数 */ public static void lowestOne(int n){ int count =0; while(n!=0){ n>>=1; count+=n; } count++; System.out.println(count); } public static void main(String args[]){ int n = 60; execute(60); execute2(60); lowestOne(3); } }
相关文章推荐
- 不要被阶乘吓倒
- [编程之美] PSet2.2 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 不要被阶乘吓倒
- 试题答案_不要被阶乘吓倒
- 编程之美--不要被阶乘吓倒 求N!的质因数2的个数
- (1.5.2.2)不要被阶乘吓倒
- 编程之美 不要被阶乘吓倒
- 【转】不要被阶乘吓倒
- 数字之魅:不要被阶乘吓倒
- 程序员面试100题之八:不要被阶乘吓倒(二进制表示中最低位1的位置 )
- 编程之美--不要被阶乘吓倒
- 编程之美2.2不要被阶乘吓倒Java版
- 不要被阶乘吓倒[转]
- 程序员面试100题之八:不要被阶乘吓倒
- 不要被阶乘吓倒(1)
- 《编程之美》2.2 不要被阶乘吓倒(c++ 源码)
- 编程之美——不要被阶乘吓倒
- 不要被阶乘吓倒(2)