51nod 1239 尤拉函式之和 杜教篩

2022-04-30 02:48:10 字數 1001 閱讀 4489

【題意】給定n,求σφ(i),n<=10^10。

【演算法】杜教篩

【題解】

定義$s(n)=\sum_^\varphi(i)$

杜教篩$\sum_^(\varphi *i)(i)=\sum_^\sum_\varphi(d)=\sum_^\sum_^}\varphi(d)$

根據$id=\varphi*i$,$\sum_^(\varphi*i)(i)=\frac$

所以$s(n)=\frac-\sum_^s(\frac)$

然後遞迴進行即可,預處理前$n^}$項,則複雜度為o(n^(2/3))。

本質上是對於id=φ*i,其中i和id的字首和都可以直接計算,所以可以用杜教篩處理φ的字首和。

#include#include

#include

#include

#define ll long long

using

namespace

std;

const

int sq=100000,pre=5000000,mod=1e9+7,inv=(mod+1)/2

;int a[100010],phi[pre+5

],prime[pre],tot;

ll n;

bool vis[pre+5

];int

solve(ll n)

return a[n/n]=ans;

}int

main()

for(int j=1;j<=tot&&i*prime[j]<=pre;j++)

phi[i*prime[j]]=phi[i]*(prime[j]-1

); }

phi[i]=(phi[i]+phi[i-1])%mod;

}memset(a,-1,sizeof

(a));

printf("%d

",solve(n));

return0;

}

view code

51nod1239 尤拉函式之和

求 i 1n i n 10 10 這道題和莫比烏斯函式一行,都可以通過神奇的推導的出結論。我們設 n i 1n i 眾所周知,d n d n 那麼,n n d n,d d 於是 n i 1n i d i,d d n n n 1 2 i 2n d i d d n n n 1 2 i d 2n d 1 ...

51nod 1239 尤拉函式之和

求 n i 1 i 1 n 10 杜教篩第二道裸題。必要結論 i n i n 證明 設f n i n i 將n分解質因數,n p qii 利用莫比烏斯函式裡學到的乙個性質,可以得到 f n f pq ii f pq qk 0 pk q k 1p k pk 1 1 p q f n n 設s n n i...

51Nod 1239 尤拉函式之和

acm模版 這個題和那個 51nod 1244 莫比烏斯函式之和 的方法幾乎一模一樣,差別就是推導公式的結果不一樣罷了,但是形式是一樣的。推導如下 設 f n i 1 n i 通過尤拉函式的性質我們可以知道 d n d n 所以呢,n n d n,d d f n i 1n i d i,d d f n...