首页 > 代码库 > 不要被阶乘吓到

不要被阶乘吓到

问题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;    }}

 

不要被阶乘吓到