C++找出m~z范围内的全部素数

目录

前提提要

代码实现

输入示例

输出结果

代码分析


前提提要

思路:判断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()用于设置字段的宽度,但后面紧跟的字段不满足长度时,前面加空格;若后面字段长度超过,则不起作用。简单意思来说,就是对齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王陈锋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值