(一)計算N!末尾0的個數,兩種方法的代碼如下:
(二)計算N!的二進制表示中最低位1的位置,比如N = 3, N! = 6,二進制表示是:1010,則所求的最低位的1在第二位上。
解法一、問題可以轉化一下:
一個二進制數除以2的過程是:判斷一個二進制位是否爲0,若爲0,則將此二進制數右移一位,即爲商值;反之,若爲1,則說明這個二進制數是奇數,無法被2整除。因此這個問題實際上等價於求 N! 中含有質因數2的個數,最終答案爲:N!含有質因數2的個數加1。
解法二、N!中含有質因數2的個數,還等於N減去N的二進制表示中1的數目。
(三)給定一個整數n,判斷它是否爲2的方冪。判斷條件:n>0 && ((n & (n-1)) == 0)) .函數如下: