标签:
/** * 计算N的阶乘结果末尾0的位数 * @param N 求阶乘的数 * @return N的阶乘结果末尾0的位数 */ public static int getLowZeroNum(int N) { int ret = 0; int j ; for(int i = 1 ; i <=N ; i++) { j = i; while(j % 5 == 0) { ret ++; j = j / 5; } } return ret; }
/** * 计算N的阶乘结果末尾0的位数 * @param N 求阶乘的数 * @return N的阶乘结果末尾0的位数 */ public static int getLowZeroNum2(int N) { int ret = 0; while(0 != N) { ret += N/5; N /= 5; } return ret; }
/** * N的阶乘最低位1的位置 * @param N 求阶乘的数 * @return N的阶乘最低位1的位置 */ public static int getThePosition(int N) { int ret = 0; while(0 != N) { N = N >> 1; //右移一位,相当于十进制除以2 ret += N; //不大于当前N的2的倍数的个数 } return ret; }
public static void main(String[] args) { //测试计算N的阶乘结果末尾0的位数 int N = 5; System.out.println(N + "的阶乘结果末尾0的位数:" + Factorial.getLowZeroNum(N)); System.out.println(N + "的阶乘结果末尾0的位数:" + Factorial.getLowZeroNum2(N)); //测试N的阶乘最低位1的位置 System.out.println(N + "N的阶乘最低位1的位置:" + Factorial.getThePosition(N)); }
标签:
原文地址:http://www.cnblogs.com/0201zcr/p/4637492.html