本文主要是介绍C++筛选法求素数输入m、n(m,n<100),输出[m,n]之间的素数。要求:使用筛选法求素数。求100以内素数的筛选过程:在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数, 找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
筛选法求素数
输入m、n(m,n<100),输出[m,n]之间的素数。要求:使用筛选法求素数。
求100以内素数的筛选过程:在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数, 找出所有的非素数,把它挖掉,最后剩下的就是素数。提示:可以将1100这些数存储于数组1100下标,挖掉的数据置为0。
具体做法如下:
<1> 先将1挖掉(因为1不是素数)。
<2> 找到数组中第一个非零值(2),把2的倍数挖掉。
<3> 重复步骤<2>,再把3,。。。的倍数挖掉,直至11时结束(实际上可以挖掉7的倍数后即可结束)。
<4> 数组中非零值即为素数。
Sample Input
5 19
Sample Output
5 7 11 13 17 19
#include<iostream>
using namespace std;
const int Max = 101;
int main()
{
int a[Max], i, j,m,n;
for (i = 1; i < 101; i++)//可以将1~100这些数存储于数组1~100下标
a[i] = i;
a[1] = 0;//挖掉的数据置为0
for (j = 2; j <= 11;j++)
for (i = j + 1; i < 101; i++)//遍历数组将符合条件的置为0
if (a[i] % j == 0)
a[i] = 0;
cin >> m >> n;
for (i = m; i <= n; i++)
if (a[i] != 0)//数组中非零值即为素数
cout << a[i] << " ";
cout << endl;
return 0;
}
这篇关于C++筛选法求素数输入m、n(m,n<100),输出[m,n]之间的素数。要求:使用筛选法求素数。求100以内素数的筛选过程:在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数, 找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!