容斥定理

 

即如1~100 中有多少个 2的因子?

有些数字是1个该因子。有些数字有2个 有些数字有3个。

这就好比产生了重叠。

那么该怎么数呢?

 

                                           1 1       1 

        1 2 2 1 1 2        ->     1 1 1 1 1 1   把2认为是2个1层叠在一起。然后你可以先数掉第一层。  就剩下 1 1     1 然后再数这一层即可。

也就是说先解决 1~100 中有多少个 能被2整除的数。再解决 1~100 种有多少个能被2^4整除的数。。。。这些数之和就是2的因子的个数。

那么就是解决一个问题。 1~100种有多少个能被某个数 整除的数。

逆向思维。看看有什么数能被2给整除

2*1 2*2 2*3 2*4 2*5 2*6.....

你会发现也就是 n*m<=100  m的值就是了。也就是说m = [100/n].  []  是取整的意思。
所以该问题也就引刃而解了。

思考:

ex: 所有小于 100 的正整数中  有因子2 或3 的数的个数 ?

ex: 分母是1001的最简分数一共有多少个?  (提示:1001=7×11×13)

posted @ 2015-03-13 22:35  Milkor  阅读(236)  评论(0编辑  收藏  举报