目录
前提提要
思路:判断m是否为素数的算法是这样的,让m被2到根号m除,如果m不能被2~根号m之中的任何一个整数整除,就可以确定m是素数。
为了记录m是否为素数,可以用一个bool类型的prime变量来记录。
在循环开始的时候设prime为真,若m被某一整数整除,就表示m不是素数,此时使布尔变量prime的值变为假。
最后根据prime是否为真,决定是否输出m。
而2为素数,若m<=2了话,判断素数可以从3开始。
代码实现
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main() {
int m, k, i , n = 0,z;
bool prime;
cout << "请依次输入需要筛选素数的范围,由低位到高位数:";
cin >> m >> z;
if (m <= 2&&z>=2)
{
cout <<setw(5)<< 2;
m = 3;
}
for ( ; m <= z; m += 1)
{
prime = true;
k = int(sqrt(m));
i = 2;
while (i <= k)
{
if (m % i == 0)
{
prime = false;
break;
}
i++;
}
if (prime)
{
n++;
cout << setw(5) << m;//输出素数m,字段宽度为5
}
if (n % 10 == 0)
{
cout << endl;
}
}
cout << '\n';
return 0;
}
输入示例
100 200
输出结果
代码分析
代码有用到setw()函数,此函数的头文件为#include<iomanip>,setw()用于设置字段的宽度,但后面紧跟的字段不满足长度时,前面加空格;若后面字段长度超过,则不起作用。简单意思来说,就是对齐。