1. 程式人生 > >莫比烏斯反演與最大公約數

莫比烏斯反演與最大公約數

在數論中,有很多題目都與莫比烏斯反演有關,最典型的就是最大公約數。比如你可以見到如下常見問題。

(1)已知,求為質數的的對數,或者等於1的的對數。

(2)已知,求為質數的的對數,或者等於1的的對數。

(3)已知,求的對數。

(4)已知,求的對數。

上面的問題其實都可以用莫比烏斯反演來解,時間複雜度都還可以。關於莫比烏斯反演,前面的文章中有詳細介紹。

接下來,我們看一個關於莫比烏斯反演稍微複雜一點的題目。

題意:給一個長度小於20的整數陣列a[],有另外一個數組b[],滿足條件,求使得條件

     成立的陣列b[]的個數,結果對取餘。

分析:依據前面學的莫比烏斯反演,我們先設兩個函式

     為滿足條件的對數

     為滿足條件的對數

     那麼,很明顯有 ,注意這裡的公共因子。

     而,反演後得到

     在這裡我們只考慮為無平方因子的數即可。