Dirichlet 積の解読
これの解読をする
aが乗法的な時のDirichlet 積の計算
c=b; for(int p:primes) for(int i=N/p;i;i--){ int n=p*i,q=p,m=i; while(true){ c[n]+=a[q]*c[m]; if(m%p)break; q*=p;m/=p; } }
p
についてのループが終わると、
が成立する様になることをpについての帰納法で示すと良い
についてのループでは、の時にwhileループ内でに
がの昇順にから足されてる
を降順に取っているのは
の時に
という式で と言う項が足されないため
(を昇順に取っているとには既にが足されているため上記の様な事が起きてしまう)