Python判断一个整数是否为素数
素数的定义:是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
即只能被1和自己本身整除的数
思路及步骤
- 给定一个大于2的整数n
- 令i=2
- 用n除i,得到余数r
- 判断r==0是否成立,如果成立则n不是素数,结束算法;如果不成立则将i的值+1仍然用i表示
- 判断i>(n-1)是否成立,如果成立则n是素数;否则返回第3步
流程图
使用while语句实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | n = int ( input ( "请输入一个数字:" )) i = 2 while True : if n < 2 : print ( "请输入一个大于或者等于2的整数" ) break elif n = = 2 : print ( "{}是素数" . format (n)) break elif n > 2 : r = n % i i + = 1 if r = = 0 or i > n - 1 : if r = = 0 : print ( "{}不是素数" . format (n)) break else : print ( "{}是素数" . format (n)) break |
执行步骤
如果n=1则退出
如果n=2则输出2是素数
如果n=3则按照以下步骤执行
1,i=2 n=3 判断n>2满足条件执行r=3%2=1
2,i增加1 i=3
3,判断r == 0 结果为False i > n-1 3>3-1 结果为True 整体结果为True继续执行if下面语句
4,判断r==0结果为False则执行else输出3是素数
如果n=4则安之以下步骤执行
1,i=2 n=4判断n>2满足条件 执行r=4%2=0
2,i增加1 i=3
3,判断r==0结果为True整体结果为True无需判断i>n-1整体结果为True
4, 判断r==0所以大于4不是素数
以此类推
输入任何数字只要可以被2至输入的整数之间的任意一个数整除即余数为0则可以判断为非素数
直到被除数增加到与输入的数字一致之间还没有出现可以整数的被除数则判断该数为素数
使用while循环需要把被除数i从2开始没执行一次+1 下面使用for循环实现,i的取值为2至输入的整数n
1 2 3 4 5 6 7 8 | n = int ( input ( "请输入一个数字:" )) for i in range ( 2 , n): r = n % i if r = = 0 : print ( "{}不是素数" . format (n)) break else : print ( "{}是素数" . format (n)) |
实现的效果是一样的
本列使用for循环被除数为从2开始至n-1,如果之间有能整数的被除数则可以判断数字不是素数
如果一直到n-1还是没有被整除则认为输入的n为素数
注意else的位置是与for循环同级而不是与if同级,如果以if同级则在第一次循环i=2的时候就通过余数来判断一个数是奇数还是偶数了
注意:在python中else不一定跟在if后也可以写在for后面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2019-10-21 Java之使用IDE
2019-10-21 Java之第一个Java程序
2019-10-21 Java之安装JDK
2019-10-21 Java之java简介
2017-10-21 oracle通过profile限制用户的恶意登录和使用期限
2017-10-21 oracle权限赋予