加载中…

返回上一页

xxs线性筛求素数

线性筛求素数

int prime[MAXN]; // 保存素数
bool is_not_prime[MAXN] = {1, 1}; // 0和1都不是素数

// 筛选 n 以内的所有素数
void xxs(int n) {
    for (int i = 2; i <= n; ++i) {
        if (!is_not_prime[i]) { // 如果i是素数
            prime[++prime[0]] = i;
        }
        for (int j = 1; j <= prime[0] && i * prime[j] <= n; ++j) {
            is_not_prime[i*prime[j]] = 1;
            // 如果i中包含了该质因子,则停止
            if (i % prime[j] == 0) break;
        }
    }
}
posted @ 2022-02-16 20:18  1Liu  阅读(17)  评论(0)    收藏  举报