題目大意:
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不是素數哦 這樣已經不慢,但由於所有非素...