小韦老师@神犇营-my0162-素数个数

小韦老师@神犇营-my0162-素数个数

题目:

描述

输入两个整数 X 和 Y,输出两者之间的素数个数(包括 X 和 Y)。

输入

两个整数 X 和 Y (1 ≤ X, Y ≤ 10^5)。

输出

输出一个整数,表示 X,Y 之间的素数个数(包括 X 和 Y)。

输入样例1

1 100

输出样例1

25

提示

如果发现超时,则需要借助一个工具。
一般我们判断 x 是否为素数时,枚举 2~x-1,看是否有某个数可以整除 x。其实可以将枚举的范围改为:2~sqrt(x),其中 sqrt 为求平方根函数。

题解:

破题:

考查素数的判断和自定义函数。

思路:

1.首先定义两个变量 m 和 n,代表 X 和 Y,并将 m 和 n 输入。
2.定义一个计数器,并初始化为 0。
3.枚举 m 到 n 的每一个整数,判断当前数是否为素数(这里用自定义函数判断),若为素数,则计数器加 1。
4.输出计数器。
5.完成判断素数的自定义函数(在主函数上面):
(1)返回值是 bool 型,参数 i 为一个整型。
(2)判断该参数 i 是否为素数:用循环枚举 2~sqrt(i),若是有可以整除 i 的数,说明 i 不是素数,立即返回 false。若循环能自然结束,循环结束后返回 true。

完整代码:
#include <bits/stdc++.h>

using namespace std;

bool prime(int i) {
	if (i <= 1) {  // 若一个数小于等于 1,则一定不是素数
		return false;
	}
	int sqr = sqrt(i);
	for (int j = 2; j <= sqr; j++) {
		if (i % j == 0) {
			return false;
		}
	}
	return true;
}

int main() {
	
	int m, n;
	cin >> m >> n;
	int cnt = 0;  // 计时器
	for (int i = m; i <= n; i++) {
		// 若 i 为素数,则计数器加 1
		if (prime(i)) cnt++;
	}
	cout << cnt;
	
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值