第18期-判断素数
1 问题描述
素数又称质数(Prime number),是指只有1和它本身两个因数的自然数,如2、3、5、7、11、13等只能被 1 和该整数整除。
质数是与合数相对立的两个概念,比1大但不是素数的数称为合数,二者构成了数论当中最基础的定义之一。
1 和 0 既非素数也非合数。
用户输入一个大于1的正整数,判断它是否为素数~
2 解题思路
- 首先用input函数获取用户输入的数字
- 然后根据素数的定义和特点,判断该数值是否为素数
- 最后输出判断结果
3 解题方法
方法一

num = int(input("请输入一个大于1的整数:")) if num > 1: for i in range(2, num): if num % i == 0: print(f"{num}不是素数") break else: print(f"{num}是素数") else: print("输入错误,输入大于1的整数")
第1行: 用input函数获取用户输入的数值,int函数将其转化为整型,赋值给变量num
第2行: 由于素数是大于 1 的整数,用if...else语句对用户输入的数值进行判断,当该数值大于 1 时,继续判断是否为素数,否则转到第 9 行,用print函数打印 "输入错误,输入大于1的整数"
第3-6行: 用for循环遍历 2 至(num - 1)之间所有的数,由于素数只能被 1 和该整数整除,如果用户输入的数值能被 2 至(num - 1)之间的任意一个数整除,则不是素数,用break退出整个循环
第7-8行: 否则用print函数打印该数值是素数
方法二

num = int(input("请输入一个大于1的整数:")) if num > 1: for i in range(2, int(num ** 0.5 + 1)): if num % i == 0: print(f"{num}不是素数") break else: print(f"{num}是素数") else: print("输入错误,输入大于1的整数")
第1行: 用input函数获取用户输入的数值,int函数将其转化为整型,赋值给变量num
第2行: 由于素数是大于 1 的整数,用if...else语句对用户输入的数值进行判断,当该数值大于 1 时,继续判断是否为素数,否则转到第 9 行,用print函数打印 "输入错误,输入大于1的整数"
第3-6行: 用for循环遍历 2 至根号n 之间所有的数,如果用户输入的数值能被 2 至根号n 之间的任意一个数整除,则不是素数,用break退出整个循环
第7-8行: 否则用print函数打印该数值是素数
为什么判定一个素数只要将此数被2 至根号n 整除即可???
设n为合数,n=ab
若a = b, 则a 和 b 都等于根号n
若a ≠ b,则 a, b 之中总有一个小于根号n ,另一个大于根号n
也就是说合数有大于根号n的因数存在,则必有一个小于根号n 的因数与之对应。
再换个说法,如果一个数没有小于根号n 的因数,则不能有大于根号n 的因数。
所以只检查是否有小于或等于根号n 的因数即可
方法三

num = int(input("请输入一个大于1的整数:")) if num > 1: if num == 2: print(f"{num}是素数") elif num % 2 == 0: print(f"{num}不是素数") else: for i in range(3, int(num ** 0.5) + 1, 2): if num % i == 0: print(f"{num}不是素数") break else: print(f"{num}是素数") else: print("输入错误,输入大于1的整数")
第1行: 用input函数获取用户输入的数值,int函数将其转化为整型,赋值给变量num
第2行: 由于素数是大于 1 的整数,用if...else语句对用户输入的数值进行判断,当该数值大于 1 时,继续判断是否为素数,否则转到第 14 行,用print函数打印 "输入错误,输入大于1的整数"
第3-4行: 若该数值等于2,则打印该数是素数
第5-6行: 偶数中除了2都不是质数,且奇数的因数也没有偶数,所以若该数值能被2整除,则打印该数不是素数
第7-13行: 用for循环遍历 3 至根号n 之间所有的数,如果用户输入的数值能被3 至根号n 之间的任意奇数整除,则不是素数,用break退出整个循环;否则用print函数打印该数值是素数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现