Junie's Blog

素数筛法基础

全文共 33预计阅读 1 分钟

改进版埃氏筛

对于每个数 xx ,只需要从 x2x^2 开始,把 x2,(x+1)x,...,(n/x)xx^2 , (x+1)x ,..., (n/x)x 筛去即可

for (int i = 2; i <= n; i++) {
    if (flag[i]) continue;
    p[cnt++] = i;
    for (int j = i; j <= n / i; j++) flag[i * j] = 1;
}

评论