2012-10-21

[離散] 基礎數論


助教您好:
這是老師在離散基礎數論所提到的一個例題,
老師在上課也有舉例,像是1001000 = 2^6 + 2^3 = 2^3 ( 2^3 + 1 )
因為提出了2^3所以展開之後會有三個0
那為什麼70!展開之後,計算0的個數會是以下的式子 ?


解答是:
70/2  +  70 / (2^2) + 70 / (2^3) + 70 / (2^4) + 70 / (2^5) + 70 / (2^6)
每一個70/2^* 都有取floor

4 則留言:

月戀星辰 提到...

您好:

70!=70*69*...*1

問二進位表示法有幾個連續的0,等價於問70!中有幾個2。(例如4=100、因為4中有2個2、8=1000,因為8中有3個2)
若您還是不能想像,不如思考我們怎麼把十進位轉2進位的,是否是連續除以2呢?

因此70!中總共2的個數為:

70中2的個數+69中2的個數+...+1中2的個數,因此如上課所示一般。

以上淺見..

owlran 提到...

謝謝月戀大解答
那為什麼
70中2的個數+69中2的個數+...+1中2的個數
是這樣算..

70/2 + 70 / (2^2) + 70 / (2^3) + 70 / (2^4) + 70 / (2^5) + 70 / (2^6)

月戀星辰 提到...

您好:

因為4提供兩個2、8提供三個2、16提供四個2

因此 70/2代表1~70中所有數字包含2的個數,但若包含4便會再多一個2,所以70/4代表1~70中所有數字包含4的個數,原來4的個數要算兩個2,但是因為70/2已經算了包含4中的一個2,所以70/4只需再算一個2,同樣地,8包含了三個2,因為70/2、70/4已經算了包含8中的兩個2,所以僅需再算一個2,16、32、64均相同。

以上淺見..

owlran 提到...

原來是這樣
非常謝謝月戀大詳細解說 ^__^