当前位置: 首页 > news >正文

练习题: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 是质数。
  • 输出结果:根据函数的返回值,输出相应的信息。

结束语

通过这个示例,你已经学会了如何定义一个函数来判断一个数是否为质数。质数判断是编程中常见的基础问题,掌握这个问题的解决方法有助于你理解循环结构和条件判断的使用。在后续的学习中,你可以进一步探索质数的相关算法和应用,不断提升自己的编程能力。

相关文章:

  • 【机密计算顶会解读】12:机密提示——保护云LLM推理服务中的用户提示词
  • vue将页面导出成word
  • LLM架构解析:NLP基础(第一部分)—— 模型、核心技术与发展历程全解析
  • NO.59十六届蓝桥杯备战|基础算法-前缀和|一维前缀和|最大子段和|二维前缀和|激光炸弹(C++)
  • Dubbo(21)如何配置Dubbo的注册中心?
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例7,TableView16_07 列拖拽排序示例
  • Java 开发中的 AI 黑科技:如何用 AI 工具自动生成 Spring Boot 项目脚手架?
  • Python中的装饰器
  • 刘火良FreeRTOS内核实现与应用学习之6——多优先级
  • 蓝桥杯备考:模拟算法之排队接水
  • skynet.socket.limit 使用详解
  • 数据结构每日一题day5(顺序表)★★★★★
  • 为mariadb和mysql添加用户和修改密码的方法
  • 树莓派 —— 在树莓派4b板卡下编译FFmpeg源码,支持硬件编解码器(mmal或openMax硬编解码加速)
  • 清华大学第10讲:迈向未来的AI教学实验396页PPT 探索未来教育的无限可能|附PPT下载方法
  • 毕业设计:实现一个基于Python、Flask和OpenCV的人脸打卡Web系统(六)
  • 2025年最新自动化/控制保研夏令营预推免面试真题分享(东南大学苏州校区/华东理工/南航/天大)
  • 封装了一个支持多个分区的iOS自适应动态宽度layout
  • 探索MVC、MVP、MVVM和DDD架构在不同编程语言中的实现差异
  • 自然语言处理|人工智能如何革新作文批改:技术全解析
  • 联合国第二届运动会闭幕,刘国梁受邀成为“联合国运动会大使”
  • 加拿大总理宣布新内阁名单
  • 受贿3501万余元,中石油原董事长王宜林一审被判13年
  • 上海北外滩开发建设五周年交出亮眼答卷,未来五年有何新目标?
  • 云南一男子持刀致邻居3死1重伤案二审开庭,未当庭宣判
  • 人民币对美元即期汇率盘中创半年新高,离岸市场升破7.2