ある数論的関数の和

2 secs 1024 MB
shobonvip's icon shobonvip

f(n)f(n) の特徴

p,qp, q を素数とします。そうすると、 e1e\ge 1 に対して f(pe)=f(qe)f(p^e)=f(q^e) が成り立ちます。

もっと一般に、正整数 n,mn, m に対して n,mn, m の素因数分解をそれぞれ n=p1α1p2α2pkαk,m=q1β1q2β2qlβln=p_1^{\alpha_1}p_2^{\alpha_2}\cdots p_k^{\alpha_k}, m=q_1^{\beta_1}q_2^{\beta_2}\cdots q_l^{\beta_l}、ただし pi,qip_i,q_i は素数、 αi,βi1\alpha_i,\beta_i\ge 1 とすると、多重集合 {α1,α2,,αk}\{\alpha_1, \alpha_2, \cdots, \alpha_k\}{β1,β2,,βl}\{\beta_1, \beta_2, \cdots, \beta_l\} が一致していれば f(n)=f(m)f(n)=f(m) が言えます。

つまり、素因数の指数の多重集合によって、 f(n)f(n) の値が決定されるということです。以降は n=p1α1p2α2pkαkn=p_1^{\alpha_1}p_2^{\alpha_2}\cdots p_k^{\alpha_k} に対して、多重集合 {α1,α2,,αk}\{\alpha_1, \alpha_2, \cdots, \alpha_k\}nn の Prime Signature ( https://en.wikipedia.org/wiki/Prime_signature )と呼ぶことにします。

NN 以下の Prime Signature は何種類あるか?

NN 以下の Prime Signature は何種類あるでしょうか? N=109N=10^9 の場合、素因数の個数は 2929 以下であるため、 2929 以下の分割数の和で個数が評価できます。A000070 によると、 2300023000 個程度です。しかし、実際はより少なく、次のようになります。

下の表の2べき版については https://oeis.org/A025488 にあります。

NN個数
10110^15
10210^216
10310^339
10410^483
10510^5160
10610^6289
10710^7492
10810^8803
10910^91274
101010^{10}1962
101110^{11}2958
101210^{12}4357
101310^{13}6312
101410^{14}8999
101510^{15}12651
101610^{16}17563
101710^{17}24112
101810^{18}32749

Prime Signature を列挙し、それぞれについて ff を求めることが比較的短時間で出来ます。

最後に Lucy DP + Black Algorithm

各 Prime Signature についてその ff の値が分かったとします。

この問題に答えるために、各 Prime Signature について NN 以下でその Prime Signature になるようなものの個数をすべて求めたいです。

まず、いわゆる Lucy DP によって各 k=N/ik=\lfloor N/i \rfloor に対して kk 以下の素数の個数を O(N2/3)O(N^{2/3}) から O(N3/4)O(N^{3/4}) 時間で求めます。

そこから、 Black Algorithm を応用した DFS を適用します。次の NN 頂点の木を考えます。

  • 頂点の番号は 11 から NN までである。
  • 頂点 11 は根であり、頂点 nn (n2)(n\ge 2) の親は、 n/gpf(n)n/\mathrm{gpf}(n) である。ただし、 gpf(n)\mathrm{gpf}(n)nn の素因数のうち最大のものとする。

これを DFS しますが、葉であるような頂点は探索しないことにします。探索回数は次の表の通りになります。

NN探索回数 KKlogN(K)\log_N(K)
10^140.60206
10^2190.63938
10^3880.64816
10^44030.65133
10^518940.65548
10^691080.65990
10^7449480.66467
10^82281020.66977
10^911858180.67489
10^1062986370.67992
10^11341131930.68481
10^121880141950.68952
10^1310528068600.69403
10^1459810382820.69834
10^15344301795180.70246
10^162006200985640.70640
10^1711821777449730.71016
10^1870390707371240.71375

よって、競プロで使う範囲の NN に対しては O(N2/3)O(N^{2/3})O(N3/4)O(N^{3/4}) と同じくらいと見積もることができます。ただし、実際は O(N1ε)O(N^{1-\varepsilon}) らしいです。(ABC370-G の解説

ここで、葉でない頂点 nn について、そこからつながる n×gpf(n)n \times \mathrm{gpf}(n) 以外の葉はすべて Prime Signature が同じになっています。よって、各 N/i\lfloor N/i \rfloor 以下の素数の個数を数え上げたことによって、 各 Prime Signature となる NN 以下の正整数の個数を探索回数の定数倍で求めることができます。

以上を実装することでこの問題に答えることができます。