數字之謎

(一)計算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)) .函數如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章