算法描述
要得到自然数n以内的全部素数,必须把不大于
√n的所有素数的倍数剔除,剩下的就是素数。
给出要晒数值的范围n,找出以内的素数。
先用2去筛,把2标记为素数,并把2的倍数剔除;
用3去筛,把3标记为素数,并把3的倍数剔除;
考虑一下,此时遍历到4,并且4已经被用2筛的时候给筛掉了,所以就跳过。
用5去筛,把5标记为素数,并把5的倍数剔除;
···
不断重复下去
对于可以枚举到的最小数(因为是从2开始向后枚举)
因此不用担心枚举到i时,它不是素数。
vis[i]表示i是否是素数
模板
1 |
|