積性函式求和小記

2021-09-11 17:28:14 字數 1302 閱讀 6151

模板題:p4213 【模板】杜教篩(sum)

ac code:(沒開o2優化過了,開了反而沒過,玄學優化233)

#include

#include

using namespace std;

//using namespace tr1;

typedef

long

long ll;

const

int maxn =

5e6;

bool isprime[maxn +5]

;int prime[maxn]

,cntp,mu[maxn]

;ll phi[maxn]

;tr1:

:unordered_map<

int,

int>mpu;

//代替map,加快速度

tr1:

:unordered_map<

int, ll>mpp;

void

init()

for(

int j =

1; j <= cntp && i * prime[j]

<=maxn;

++j)

phi[i * prime[j]

]= phi[i]

*(prime[j]-1

);mu[i * prime[j]]=

-mu[i];}

}for

(int i =

2; i <= maxn;

++i)

}int

calc_mu

(int x)

return mpu[x]

= res;

}ll calc_phi

(int x)

return mpp[x]

= res;

}int

main()

return0;

}

求t(n)的字首和,t(n)表示n的約數個數:

code:

#include

using namespace std;

typedef

long

long ll;

// 返回1->n每個數約數(因子)的個數和

// t = o(sqrt(n))

ll calc

(ll n)

return res;

}int

main()

return0;

}

積性函式線性篩

oi中有時需要我們線性篩某些函式,我們篩的主要是積性函式 1st 線性篩素數 include includeusing namespace std const int maxn 1e4 5 int n,prime maxn vis maxn tot void get prime int n int ...

積性函式字首和

最近突然做到一些求積性函式字首和的題,用到了各種篩,有一題用到 min 25 篩法,於是好好學習了一波,運用極不熟練。後來又遇到一道杜教篩的題,結果發現自己連 phi x 字首和都不會推了?嚇得我趕緊複習 寫部落格。常見 完全 積性函式 整除分塊 dirichlet 卷積 埃氏篩 這裡還是簡單介紹一...

積性函式篩法

很多常用的數論函式都是積性函式,而在題目中,我們常常需要線性 甚至更高 的篩法。對於積性函式,我們可以在篩素數的基礎上稍加修改,即可完成線性篩。首先,注意到積性函式的特點 f xy f x times f y 而可以線性篩的積性函式,需要知道以下兩個式子的快速求法 f p quad f p k p ...