エラトステネスの篩の活用法を総特集! 〜 高速素因数分解・メビウスの反転公式 〜 #AtCoder - Qiita

エラトステネスの篩のコード

    pub fn sieve_of_eratosthenes(n: usize) -> Vec<bool> {
        let mut is_prime = vec![true; n + 1];
        is_prime[0] = false;
        is_prime[1] = false;
        for p in 2..=n.sqrt() {
            if !is_prime[p] {
                continue;
            }
            for q in (p * 2..=n).step_by(p) {// n/p 回ループ
                is_prime[q] = false;
            }
        }
        is_prime
    }

高速素因数分解・高速約数列挙

メビウス関数

高速ゼータ変換

難しかったので一旦スキップ

区間篩