数学知识板子 / Math(updating)

埃氏筛(朴素筛法求素数):

int prime[N], tot;
bool st[N]; // true:not prime, false:is prime

void get_primes(int n)
{
    st[1] = true;
    for(int i = 2; i <= n; i++)
    {
        if(!st[i])
        {
            prime[++tot] = i;
            for(int j = i + i; j <= n; j += i) st[j] = true;
        }
    }
}

 

欧拉筛(线性筛法求素数):

int prime[N], tot;
bool st[N]; // true:not prime, false:is prime

void get_primes(int n)
{
    st[1] = true;
    for(int i = 2; i <= n; i++)
    {
        if(!st[i]) prime[++tot] = i;
        for(int j = 1; i * prime[j] <= n; j++)
        {
            st[i * prime[j]] = true;
            if(i % prime[j] == 0) break;
        }
    }
}

 

上一篇:pytest -- mac安装了pytest,但是输入pytest却提示命令不存在


下一篇:判断数据是否是数组 返回true或false