所谓筛选法,就是先将300以内所有的数归为“素数”,把1和能把2整除的数归为“非素数”,找到下一个“素数”,并将能整除其的数归为“非素数”,重复此操作,直到找到最后一个素数。
#include <iostream>
#include <array>
using namespace std;
int main()
{
array<unsigned int,1000>isPrime{};
array<unsigned int,1000>notPrime{};
for(int n=0;n<=300;n++)
{
isPrime[n]=n;
}
notPrime[1]=1;
isPrime[1]=0;
for(int j=3;j<=300;j++)
{
if(j%2==0)
{
notPrime[j]=j;
isPrime[j]=0;
}
if(j==isPrime[j])
for(int f=j;f<=300;f++)
{
if(f%j==0&&f!=j)
{
isPrime[f]=0;
notPrime[f]=f;
}
}
}
for(int q=0;q<=300;q++)
{
if(isPrime[q]==0)
cout<<"";
else
cout<<isPrime[q]<<" ";
}
return 0;
}