练习题:109
目录
Python题目
题目
题目分析
需求理解
关键知识点
实现思路分析
代码实现
代码解释
导入模块:
定义函数:
处理特殊情况:
循环检查:
返回结果:
测试函数:
运行思路
结束语
Python题目
题目
定义一个函数,判断一个数是否为质数。
题目分析
需求理解
本题要求定义一个 Python 函数,用于判断给定的一个数是否为质数。质数是指在大于 1 的自然数中,除了 1 和它自身外,不能被其他自然数整除的数。
关键知识点
- 质数的定义:明确质数的判断标准,即一个数大于 1 且只能被 1 和它本身整除。
- 循环结构:使用循环来检查该数是否能被除 1 和它本身以外的其他数整除。
- 条件判断:通过条件判断来确定该数是否满足质数的定义。
实现思路分析
- 处理特殊情况:小于等于 1 的数不是质数,需要单独处理。
- 循环检查:从 2 开始到该数的平方根(取整)进行循环,检查该数是否能被其中任何一个数整除。如果能被整除,则不是质数;如果都不能被整除,则是质数。
代码实现
import math
def is_prime(num):
if num <= 1:
return False
# 只需要检查到平方根即可
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0:
return False
return True
# 测试函数
test_num = 17
if is_prime(test_num):
print(f"{test_num} 是质数。")
else:
print(f"{test_num} 不是质数。")
代码解释
-
导入模块:
import math
:导入math
模块,用于使用sqrt
函数计算平方根。
-
定义函数:
def is_prime(num):
:定义一个名为is_prime
的函数,接受一个整数参数num
。
-
处理特殊情况:
if num <= 1:
:判断num
是否小于等于 1,如果是,则直接返回False
,因为小于等于 1 的数不是质数。
-
循环检查:
for i in range(2, int(math.sqrt(num)) + 1):
:使用for
循环从 2 开始到num
的平方根(取整)进行迭代。这里只需要检查到平方根是因为如果一个数num
有一个大于其平方根的因数,那么必然有一个小于其平方根的因数与之对应。if num % i == 0:
:在每次循环中,检查num
是否能被i
整除。如果能被整除,则返回False
,表示num
不是质数。
-
返回结果:
- 如果循环结束后都没有找到能整除
num
的数,则返回True
,表示num
是质数。
- 如果循环结束后都没有找到能整除
-
测试函数:
test_num = 17
:定义一个测试用的整数test_num
。if is_prime(test_num):
:调用is_prime
函数判断test_num
是否为质数,并根据结果输出相应的信息。
运行思路
- 导入模块:程序开始执行时,首先执行
import math
语句,将math
模块加载到当前的命名空间中,为后续使用sqrt
函数做准备。 - 定义函数:定义
is_prime
函数,Python 解释器将函数定义加载到内存中,但不执行函数体。 - 测试函数:执行
test_num = 17
语句,定义测试用的整数。然后调用is_prime
函数,将test_num
作为参数传递给函数。 - 进入函数:程序进入
is_prime
函数,首先判断num
是否小于等于 1,由于num
为 17,不满足条件,继续执行循环。 - 循环检查:从 2 开始到
int(math.sqrt(17)) + 1
(即 4)进行循环,检查 17 是否能被 2、3、4 整除。由于都不能整除,循环结束。 - 返回结果:循环结束后,返回
True
,表示 17 是质数。 - 输出结果:根据函数的返回值,输出相应的信息。
结束语
通过这个示例,你已经学会了如何定义一个函数来判断一个数是否为质数。质数判断是编程中常见的基础问题,掌握这个问题的解决方法有助于你理解循环结构和条件判断的使用。在后续的学习中,你可以进一步探索质数的相关算法和应用,不断提升自己的编程能力。