線性篩的一些應用

2021-08-28 17:43:04 字數 620 閱讀 5210

線性篩,別名尤拉篩,因可以在o(n)的時間裡篩出1-n的素數而得名。

板子:

int cnt, prime[n];

bool is_prime[n];

void euler_sieve()

} return ;

}

然後它其實還可以用來求約數個數和約數和。

預備知識:

①我們設d[i]表示i的約數個數,那麼d[i*j]=d[i]*d[j],條件是i和j互質,對於約數和的函式也同理。這種函式被稱為積性函式。關於積性函式的一些性質:

②演算法基本定理:

附上**:

//約數和

void euler_sieve()

for (int j=1; prime[j]*i<=n-10; j++)

else

} }return ;

} //約數個數

int d[n], d0[n];

void euler_sieve()

for (int j=1; prime[j]*i<=n-10; j++)

else

} }return ;

}

關於線性篩的一些思考

memset is prime,true,sizeof is prime is prime 0 is prime 1 false for int i 2 i l i 這是 思考幾個問題 1.它是怎樣達到o n 的?2.為什麼i prime j 時應該break 首先,達到o n 的原理 每乙個數隻會...

線性篩法的應用

by qw 線性篩法最基礎的功能就是求 1,n 中的素數,以此為基礎,可以對他進行一些變形。變形後的線性 篩法可以實現許多其他的功能。下文中的tot均指一定區間內的質數個數 先看一道簡單的問題 求 1,n 中的m個數的最大質因子的序數 hdoj2136 這個問題可以利用線性篩法打乙個質數表,然後二分...

線性篩及其應用

素數的線性篩法 is prime記錄當前下標的數是不是乙個素數 第一次篩掉2的倍數 第二次篩掉3的倍數 以此。當然如果我現在要篩掉14的倍數,一定是篩2 14 3 14 5 14 7 14。篩到7就可以停了 比7大的素數比如11 11 14 11 2 7 11 2 7 在22這個數的時候會被篩到的 ...