数论-筛素数
普通筛法
int get_primes(int n )
{
for(int i = 2; i <= n ; i ++ )
{
if(!st[i]) //如果是质数
{ primes[cnt ++] = i;
}
for(int j = i * 2 ; j <= n ; j += i) st[j] = true;
//不管当前i是合数还是质数,都用来筛掉后面它的倍数
}
}
埃式筛法
int get_primes(int n )
{
for(int i = 2; i <= n ; i ++ )
{
if(!st[i]) //如果是质数
{ primes[cnt ++] = i;
for(int j = i * 2 ; j <= n ; j += i) st[j] = true;
//只用质数i筛掉它的倍数(合数),也可以筛
数论-筛素数最先出现在Python成神之路。
共有 0 条评论