view code
1//n!進行質因數分解,n!=2^x+3^y+5^z...所以末尾0的個數為min(x,z),又因為x>z,所以只要求出z的值即可
2int solution(int n)
3 13
return count;
14 }
15 }
1617
//公式:z=[n/5]+[n/5^2]+[n/5^3]+...其中[n/k]表示1,2,3,...,n中能被k整除的數的個數
18int solution(int n)
19 26
return count;
27 }
2829
//第二個問題等同於求n!中含質因數2的個數,等於[n/2]+[n/4]+[n/8]+...
30int solution(int n)
31 38
return count;
39 }
4041
//n!含有質因數2的個數還等於n減去n的二進位制表示中1的數目
程式設計之美 2 2 階乘
題目1 找出n 中末尾0的個數。include 輸入n 輸出n 中末尾0的個數 分析 只需要知道n 中質因子5出現了多少次 因為2 5 10 因子2比5多 只需要關注5 方法1 對1.n的每個數字 迴圈除以5 相加得到總共因子5的個數 注意 像25這樣的數字提供了2個5 int numofzero1...
程式設計之美 不要被階乘嚇倒
問題1描述 給定整數n,n求n!末尾有幾個0。例如n 10,n!3628800,n!末尾有兩個0 分析 一 將n!分解質因數,n!2 x 3 y 5 z 由於10 2 5,所以問題也就是求m min x,z 容易看出x大於等於z,所以也就是求z include int main printf d n...
程式設計之美 不要被階乘嚇到
題目 1 給定乙個整數n,那麼階乘n 末尾有多少個0呢?2 求n 的二進位制表示中最低位1的位置?先來看怎麼計算階乘,當然可以是迴圈,也可以是遞迴,上 public long factorial1 int n return sum public long factorial2 int n retur...