筛法又称筛选法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。
要点:采用数组的方法,将素数定义为0,素数的倍数定义为1.这样可以进行区分开。
#include <iostream>
using namespace std;
#include <iomanip>
int main()
{
int a[101]={0}, i, j;//为了使数组下标对应相应的数字,我们将数组设置为a[101],且将数组元素全定义为0
for (i = 2; i < 101; i++)
{
for (j = 2; j * i < 101; j++)
{
a[j * i] = 1;//将倍数定义为1,素数定义为0
}
}
cout<<"1-100 prime is "<<endl;
for (i = 2; i < 101; i++)//1不是素数,所以从2开始
{
if (a[i] == 0)//打印出素数
cout<<i<<' ';
}
cout<<endl;
return 0;
}
答案: