Python求解区间正整数内所有素数之和的完整实现与解析

向北走
向北走
发布时间:2026-10-14| 5人浏览过
原创

本文详细解析如何使用Python求解指定区间[m, n]内所有素数之和。内容涵盖输入数据的读取与类型转换、区间大小的自动排序处理、素数的判定逻辑以及边界条件(如无素数)的输出处理。通过分步代码解析,帮助初学者掌握循环结构、条件判断及列表映射在编程中的实际应用。

题目背景与要求

前言

本文作为Python学习过程中的记录与分享,源自PTA程序设计类教学平台的题目。若您正在学习相关编程知识,建议仔细阅读以下内容,重点理解循环结构、条件判断以及素数判定的基本语法应用。

题目要求:

7-5 求区间正整数内所有素数之和(分值:20分)

【题目描述】计算并输出区间 [m, n] 内所有素数的总和。素数的定义为:大于1的自然数中,仅能被1和自身整除的整数。解题思路提示:可遍历区间 [m, n] 内的每一个整数,逐一判断其是否为素数,若是则累加至总和。若该区间内不存在任何素数,则输出字符串“not have prime!”。

输入格式说明:

在一行中输入两个正整数 m 和 n。需要注意的是,m 的值可能大于 n。例如,若要计算 1 到 100(包含100)之间的素数和,输入顺序可以是“100 1”。

输出格式说明:

如果区间内存在素数,输出这些素数的总和(整数形式);如果区间内没有素数,则输出“not have prime!”。

输入样例:

1 100

输出样例:

1060

参考代码与解析


m, n = map(int, input().split())
sum = 0
if m > n:
  m, n = n, m
for i in range(m, n+1):
  if i != 1:
    for j in range(2, i):
      if i % j == 0:
        break
      else:
        pass
    else:
      sum += i
if sum == 0:
  print('not have prime!')
else:
  print(sum)

素数定义与基础概念

详细解析:

首先,我们需要明确素数的定义。

质数(Prime number),亦称素数,是指在大于1的自然数中,除了1和该数自身之外,无法被其他自然数整除的数。另一种定义方式是:只有1和该数本身两个因数的自然数。

举例说明:以数字7为例,从2遍历至6,均无法整除7,只有1和7本身能整除它,因此7是一个质数。

Python代码实现与解析

代码编写步骤:

1. 处理输入数据:根据题目要求,需要在同一行读取两个正整数 m 和 n。


m, n = map(int, input().split())

map() 函数会根据提供的函数对指定序列做映射操作,其返回结果是一个列表对象。

在此处的作用是:将输入的多个字符串值批量转换为整数类型。

split() 方法使用指定的分隔符对字符串进行切片,若参数 num 有指定值,则仅分隔 num 个子字符串。

在此处的作用是:将输入的一行字符串以空格为分隔符进行切割,分离出两个数值。

2. 掌握判断单个数是否为素数的代码逻辑。


i=7    "用7举例"
for j in range(2, i):  "for循环让7除以2-7之间的数"
  if i % j == 0:
 break   "如果是i除j等于0说明不是素数直接(break)结束循环"
 else:
 print("是素数")

range(start, end, step=) 函数用于生成一个整数序列,格式为 range(开始值,结束值,步长),若未指定步长,默认值为1。

3. 扩展至判断多个数是否为素数。

定义变量 i,使用 for 循环使 i 在区间 [m, n] 内取值,逐一进行判断。


for i in range(m, n+1):
  if i != 1:   “开始的条件必须是i不能等于1”
    for j in range(2, i):
      if i % j == 0:
        break
      else:
        pass
    else:
      sum += i  “如果是就在sum里面加上这个(i)素数”

4. 对 m 和 n 进行大小排序。

在掌握素数判断逻辑后,会发现一个潜在问题:如果用户输入的顺序是“100 1”(即 m > n),直接运行可能导致逻辑错误或结果不符。因此,在判断素数之前,必须确保 m 是较小的值,n 是较大的值。


if m > n:
  m, n = n, m

5. 输出最终结果。


if sum == 0:   “如果sum在前面的整个for循环里都没有素数加入”
  print('not have prime!')  “那么输出'not have prime!'”
else:    “否则”
  print(sum)    “输出答案”

// An highlighted block
var foo = 'bar';

程序执行结束。

到此,关于Python求解区间正整数内所有素数之和的文章介绍完毕。更多相关Python区间正整数内素数求和的内容,欢迎搜索本站历史文章或继续浏览后续相关文章,感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。