筛法的引入
首先我们给出一个问题: 求1~N以内的所有质数
最朴素的算法是一一枚举 1~N以内的数,验证是否为素数
一般来说我们验证素数的代价是O(N−−√)(当然你也可以用赌徒算法),这样我们解决这个问题就需要O(NN−−√)的代价
那么我们能否做的更好呢?
我们需要的就是筛法
朴素的筛法: Eratosthenes 筛法
由唯一分解定理我们知道,一个合数总是能分解为若干个质数的乘积,因此我们产生这样一个想法:把所有是质数倍数的数都去掉(假如一开始我只知道2是质数)&#