[前面]知識
[ブロック]数論
1からnまでのiについて【課題】説明要求、I及びK割り切れます
【解決手段】明らかでは、nは1の範囲内で、I kの値が同じで割り切れるので、我々は単に範囲を見つける必要があり、そして間隔の数(すなわち、I Kが割り切れると、このセグメントの寄与を乗じ値)
1 INT RES = 0 。 2 ための(int型、D = 1 ; D <= NN;){ 3 int型より= NN /(NN / D)。 4 INT 1 = 分(以下、NN); 5つの RES + =(NN / D)(D + EN)*(A + 1 -d)/ 2 。 6 D = A + 1 。 7 }
【乗法関数]
関数F(X)、Fと、Bの互いに素(* B)を満たす= F(A)* F(b)は、F(X)は乗法関数である関数を呼び出し
乗法関数は、一般的に線形によって確認又は時定数オングストロームふるいメッシュしてもよいです
ここではより重要と一般的に使用される乗法機能のほんの一部です
φ(X):オイラー関数、値xのより少ない数と素数X及び
Ι(X):定数の関数として関数値
ID(X):関数の値は、xの関数に等しいです。
ε(X):メンバーシップ関数は、xが1である場合にのみ、残りの場合は0である1に等しいです
メビウス関数[]
TIは、i番目の素因数の累乗を意味します
関数の定義は次のとおりです。
1. 1、関数の値は、n == 1に等しい場合
2.ケースが1より大きい素因数の力があり、機能0
素因数のすべての電力が1に等しい3.関数は(-1)k番目、kが異なる品質係数の数を指しています
関数を求めるコード1〜MAXNメビウスボードを
1 int型VIS [MAXN]プライムMU [MAXN]、[MAXN]和[MAXN]。 2 int型 CNT = 0 。 3 ボイドのinit() 4 { 5つの MUは[ 1 ] = 1 。 6 CNT = 0 。 7 のための(int型 I = 2 ; iがMAXNを<Iは++ ) 8 { 9 もし(VIS [I] == 0 ) 10 { 11 -ミュー[I] = 1 。 12 プライム[++ CNT] = I。 13 } 14 のために(INT J = 1 ; J <= CNT && iが素数* [J] <MAXN; J ++ ) 15 { 16 VIS [プライム[J] * I] = 1 。 17 であれば(私の%プライム[j] == 0 ) 18 { 19 ミュー[i *が素数[J] = 0 ; 20 ブレーク; 21 } 22 他の 23 { 24の ミュー[iが[プライム* J] = - ミュー[I]。 25 } 26 } 27 } 28 のために(int型 i = 1 ; iはMAXN <; iは++ ) 29 和[I] =和[I - 1 ] + MU [I]。 30 }
メビウス関数があり、特別なプロパティを:
F(x)が等しく、全ての要素xとメビウスの関数となるよう
関数値F(x)は、xが1である場合にのみ、残りの場合は0である1に等しいです
(プライム品質係数は、それの性質の使用を許可することができ、ここに証明を与えられていません)
[ディリクレ畳み込み]
2つの関数のディリクレ畳み込みは、関数fを動作させ、dは係数であり、N F(D)* G(N / D)となるようにGが、畳み込みに等しい、および因子の全ては、NでありますF、ディリクレ畳み込みのG
性質があります。
上記で定義されたディリクレ畳み込み我々は次のような結論を得ることができます:
[A]結論メビウス関数の特殊な性質から理解があり、Iはμ==ε* [結論2]等メビウス関数を、オイラー関数は、特別な特性を有します。
オイラー関数に等しいF(x)とxの要因の全ては、そのように
関数F(x)はxは
(オイラー関数の定義は、ここに証明を与えていない、それを許可することができます)
1. F * I == ID
2. F == ID * M
次のように導出し、結論は以下のとおりです。
メビウス反転[]
(摘自https://oi-wiki.org/math/mobius/)
推导过程如下