[GESP202306 二级] 找素数
GESP二级真题,多重分支嵌套/数学函数,难度★✮☆☆☆。
luogu-B3840 [GESP202306 二级] 找素数
题目要求
题目描述
小明刚刚学习了素数的概念:如果一个大于 的正整数,除了 和它自身外,不能被其他正整数整除,则这个正整数是素数。现在,小明想找到两个正整数 和 之间(包括 和 )有多少个素数。
输入格式
输入只有一行两个正整数 。约定 。
输出格式
输出一行,包含一个整数 ,表示找到 个素数。
样例输入 #1
2 10
样例输出 #1
4
样例输入 #2
98 100
样例输出 #2
0
提示
【样例解释 1】
在 和 之间有 个素数,分别为:、、、。
题目分析
我们可以使用两层循环,外层循环遍历所有的数,内层循环判断每个数是否为素数。如果一个数能被2到它的平方根之间的任何数整除,那么它就不是素数。
{% include custom/custom-post-content-inner.html %}
示例代码
#include <cmath>
#include <iostream>
using namespace std;
int main() {
int a, b; // 定义两个整数变量a和b
cin >> a >> b; // 从输入流中读取a和b的值
int ans = 0; // 初始化答案变量ans为0
for (int i = a; i <= b; i++) { // 从a到b遍历所有数
bool flag = true; // 初始化标志变量flag为true,表示i是否为素数
for (int j = 2; j <= sqrt(i); j++) { // 从2到i的平方根遍历所有可能的因数
if (i % j == 0) { // 如果i能被j整除
flag = false; // 则i不是素数,设置flag为false
break;
}
}
if (flag) { // 如果i是素数
ans++; // 则答案加1
}
}
cout << ans; // 输出答案
return 0; // 返回0,表示程序执行成功
}
{% include custom/custom-post-content-footer.md %}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目可在 洛谷题库 在线评测。
“bcqm-”系列题目可在 编程启蒙题库 在线评测。
GESP/CSP 认证学习微信公众号

Last updated on