Sum 篩法 思路

2021-08-27 11:43:50 字數 720 閱讀 1648

題目大意:

f(n)定義為 有多少組 n=ab,a和b都不存在平方數,12=43,4是平方數,所以不行

分析:首先,如果i是是乙個素數,ans[i]=2.

然後我們考慮iprime[j]

1.i整除prime[j]

1.1如果i整除(prime[j]prime[j[)ans=0

1.2否則 ans[iprime[j]]=ans[i/prime[j]]

2.否則 ans[iprime[j]]=2*ans[i[

#include

#include

#include

#include

#include

#include

using namespace std;

const

int maxn =

2e7+10;

int prime[maxn]

;bool isnot_prime[maxn]

;int ans[maxn]

;void

init()

for(

int j=

0;j)else

break;}

else}}

for(

int i=

2;i<=maxn;i++)}

intmain()

return0;

}

習題 杜教篩(Sum)(杜教篩)

傳送門杜教篩的板子,拿來練手 beginans sum phi i end g n 1,phi n f n h n sum phi d g frac n h n sum f d g frac 令f n sum f i h n sum h i beginh n sum h i sum sum f d ...

線性篩法(尤拉篩法)

嗯在剛剛 沒錯就是在幾分鐘之前 我學會了線性篩法 實在是乙個很好的篩法 正常的篩法,都會對乙個數篩多次 但是尤拉篩法不會 尤拉篩法是用它的最大因數去篩 別跟我說最小質因數,那個很難讓人理解 雖然最小質因數和最大因數是一樣的 我們假設乙個數k,它是t的最大因數 容易知道t是不唯一的 那我們要乘以乙個質...

Eratosthenes篩法(素數篩)

最一般的素數篩思想很簡單,對於不超過maxx的每個非負整數p,刪除2p,3p,4p,然後剩下的就是素數,複雜度o nlogn 因為對內層迴圈n 2 n 3 n n 小於 1 1 2 1 3 1 n ln n 1 其中 為尤拉常數 0.577218 應當注意,1不是素數哦 這樣已經不慢,但由於所有非素...