文章目录
素数筛 Prime sieve
素数又称质数:一个大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的数叫做素数;否则称为合数(规定 1 既不是质数也不是合数)。
素数筛方法主要有三种:
素数的判定(素数筛)
普通线性筛(埃氏筛法 / 埃拉托斯特尼(Eratosthenes)筛法)
优化后的线性筛(欧拉筛法 / 欧拉函数(Euler)筛)
寻找素数,二重循环暴力查找,复杂度O(n^2),通过循环中只判断到根号 n 可以优化一些。
在数论中,埃氏筛法,O(n loglogn) 的算法,而数据范围达到 1e7 时也不理想,欧拉筛法,O(n) 的线性筛法。
一、素数的判定
暴力枚举,枚举 2 ~ √n 所有数,用 n 去试着除以,若有能整除的 n 为合数,若都不能整除,n 就是质数。
时间复杂度:O(√n)