问题1.给定一个整数N,那么N的阶乘N!末尾有多少个0.
问题2:求N!中二进制最低位位1的位置;
java实现:
package 经典; public class 阶乘 { /** * @param args */ public static void main(String[] args) { System.out.println(fictorial(10)+" 中 0 的个数为: "+numOfZero(10)+","+Integer.toBinaryString(fictorial(10))+"中二进制最低位位1的位置"+lowestOne(10)); } public static int fictorial(int n) { int N=1; for(int i=1; i<=n; i++) N=N*i; return N; } public static int numOfZero(int n) { int result=0; int j; for(int i=1; i<=n; i++) { j=i; while(j%5==0) { result++; j/=5; } } return result; } public static int lowestOne(int n) { int ret=0; while(n!=0) { n>>=1; ret+=n; } return ret; } }