解题思路:
筛法就是把数据按从小到大的顺序排列,找到第一个素数,再筛选掉数据内所有与此数有关的数,完成之后再找下一个素数,再次筛选,以此类推
注意事项:
参考代码:
#include<iostream>
using namespace std;
int main()
{
int a;
cin >> a;
int arr[100];//用于存放数据
for (int i = 0; i < a; i++)
{
arr[i] = i + 1;//遍历录入所有数据
}
for (int i = 0; i < a; i++)//遍历访问所有数据
{
if (arr[i] != 0 && arr[i] != 1)//0和1不在范围内,直接排除
{
for (int j = 2; j * arr[i] < a+1; j++)//用于找出需被筛选出的数,但此数需要小于最大数
{
if (j * arr[i] == arr[j * (i + 1)-1])//判断出数组中的数是否符合被筛出的条件,符合则置0,下次不再访问
arr[j * (i + 1)-1] = 0;
}
if (arr[i] != 0)//输出所有不为0的数
cout << arr[i] << endl;
}
}
return 0;
}
0.0分
0 人评分