感觉我要成为 埃 和 欧拉 一样的人了
今天在做素数筛的时候发现了一个特别的筛法
不太像欧拉筛和埃氏筛以及暴力筛
算法思路大致是这样的:
首先开一个数组sz在里面保存2,2是第一个素数
int sz[114514]={2};
然后开始逐个判断这是不是质数
在拿到数字n的时候让n尝试整除sz[i]
for(int i=0;i<=114514;i++)
if(n%sz[i]!=0&&sz[i+1]==0){
sz[i+1]=n;
if(n%sz[i]==0){
break;
等到整个数组的质数都被整除完了证明其是质数,存起来
这明显不同于埃筛与欧拉筛
形象化算法
这里演示8以内
1
2
3 3%2!=0,sz={2,3};
4 4%2==0;
5 5%2!=0,5%3!=0,zs={2,3,5};
6 6%2==0;
7 7%2!=0,7%3!=0,7%4!=0;
8 8%2==0;
就是这样
末尾
这个算法有被人提出吗?如果没有,那我现在就给它想个名字并且申请专利.