刚刚了解到一种神奇的素数算法。
#include<iostream>
#include<fstream>
using namespace std;
int number[100000000];
int main()
{
ofstream fo;
fo.open("out.txt.txt");
for(int i=0;i<10000000;i++)
number[i]=1;
int now=2,a=1;
for(a=2;a<10000000;a++)
{
if(number[a]==1)
fo<<a<<endl;
for(int i=0;i<10000000;i+=a)
{
number[i]=0;
}
}
fo.close();
}
法五:埃拉托斯特尼筛选法
当我们判断某个取值范围内的素数有哪些的时候,有一个方法非常可行,就是埃拉托斯特尼筛选法。这个算法效率很高,但占用空间较大。
我们知道,一个素数p只有1和p这两个约数,并且它的约数一定不大于其本身。因此,我们下边方法来筛选出来素数:
1)把从2开始的、某一范围内的正整数从小到大顺序排列; 2)剩下的数中选择最小的素数,然后去掉它的倍数。
3)依次类推,直到循环结束。
这种筛选法动态图如下:
https://www.cnblogs.com/xiehongfeng100/p/4332998.html” title=”” />