统计素数
Description
输入区间[L,R],寻找在此区间内的质数。
Input
区间[L,R]中的整数L,R(0<=L,R<=30000)
Output
此区间中所有质数的个数n
Sample Input
0 100
Sample Output
25
python解法
import math # 导入数学库,用于计算平方根
n = 0 # 初始化变量n为0,用于计数质数的个数
# 从标准输入读取两个整数l和r,并用map函数将它们转换为整数类型
l, r = map(int, input().split())
# 使用for循环遍历从l到r(包含r)的所有整数
for i in range(l, r+1): # 从l遍历到r(包含r)
# 如果当前的数i小于等于1,则它不是质数,跳过此次循环
if i <= 1:
continue
# 初始化is_prime为True,表示假设当前的数i是质数
is_prime = True # 定义一个布尔变量,标记当前的数i是否为质数
# 使用for循环从2遍历到i的平方根(取整后加1),用于检查i是否有除了1和它本身以外的其他因数
for j in range(2, int(math.sqrt(i)) + 1): # 内层循环,从2开始到i的平方根结束
# 如果i能被j整除,则i不是质数
if i % j == 0: # 如果i能被j整除
is_prime = False # 设置is_prime为False,表示i不是质数
break # 跳出内层循环,因为已经找到了一个除数,不需要继续检查
# 如果内层循环结束后is_prime仍为True,说明i没有除了1和它本身以外的其他因数,因此i是质数
if is_prime: # 如果is_prime仍为True,那么i是质数
n += 1 # 将质数的计数n加1
# 输出在给定区间`[l, r]`内的质数个数
print(n)
c++解法
#include<bits/stdc++.h> // 引入一个常用的头文件集合,包含了C++标准库的大部分头文件
using namespace std; // 使用C++标准命名空间,避免每次调用标准库函数或对象时都需要前缀std::
int main() { // 主函数入口
int i, j, l, r, n = 0; // 定义循环变量i, j,范围变量l, r,以及计数器n(用于记录质数的数量)
cin >> l >> r; // 从标准输入读取两个整数l和r,作为查找质数的范围
for (i = l; i <= r; i++) { // 遍历范围[l, r]内的每一个整数i
if (i <= 1) { // 如果i小于等于1,则i不是质数
continue; // 跳过当前循环,继续下一次循环
}
int flag = 1; // 定义一个标志位flag,初始化为1,用于标记i是否为质数(1表示可能是,0表示不是)
for (j = 2; j <= sqrt(i); j++) { // 内层循环,从2开始到i的平方根结束,检查i是否有因子
if (i % j == 0) { // 如果i能被j整除,则i不是质数
flag = 0; // 将flag设置为0
break; // 跳出内层循环,不再继续检查其他的j值
}
}
if (flag) { // 如果flag仍为1,则i是质数
n++; // 质数计数器加1
}
}
cout << n << endl; // 输出在范围[l, r]内的质数数量
return 0; // 主函数返回0,表示程序正常结束
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
作者:小鱼
链接:https://www.52stu.com/?p=185
文章版权归作者所有,未经允许请勿转载。
链接:https://www.52stu.com/?p=185
文章版权归作者所有,未经允许请勿转载。
THE END