埃拉托斯特筛子求质数算法:
a)创建一长度为N的数组,将所有元素置为1
b)从数组下标2开始,每次找到一个值为1的元素时,在数组的剩余部分循环,并将下标1的元素置为0,即对于数组下标2,数组中所有2以上且是2的倍数的元素均被置为0(2,4,6,8,10等)对于下标3,数组中所有3以上,且是3的倍数的元素置为0(3,6,9,12等)
当该过程结束后,数组中还是1的元素,即素数。
设定1000各元素的数组,打印所有小于1000的素数
/*埃拉托斯特筛子求质数算法:
a)创建一长度为N的数组,将所有元素置为1
b)从数组下标2开始,每次找到一个值为1的元素时,在数组的剩余部分循环,并将下标1的元素置为0,
即对于数组下标2,数组中所有2以上且是2的倍数的元素均被置为0(2,4,6,8,10等)
对于下标3,数组中所有3以上,且是3的倍数的元素置为0(3,6,9,12等)
当该过程结束后,数组中还是1的元素,即素数。
设定1000各元素的数组,打印所有小于1000的素数*/
#include<iostream>
using namespace std;
int main()
{
int a[1001];
for(int i=0;i<1001;i++)
{
a[i]=1;
}
for(int i=2;i<1001;i++)
{
if(a[i]==1)
{
for(int j=i+i;j<1001;j+=i)
{
a[j]=0;//将相关倍数的元素置0(注意没有i本身)
}
}
}
for(int i=2;i<1001;i++)
{
if(a[i]==1)
{
cout<<i<<" ";
}
}
return 0;
}