简单的for循环会写,一遇到复杂的就头大?没关系跟着这篇文章来拆解问题
求1000以内有所有质数为例一、先搞懂核心概念什么是质数编程的第一步永远不是写代码而是读懂需求、吃透概念。我们今天要解决的问题找出1000以内所有的质数。首先明确质数的官方定义质数素数大于1的自然数除了1和它本身之外没有其他任何约数不能被其他自然数整除。举个通俗的例子比如数字5怎么判断它是不是质数我们只需要拿5依次除以 2、3、4排除1和自身5 ÷ 2 无法除尽5 ÷ 3 无法除尽5 ÷ 4 无法除尽全程没有能整除的数所以 5是质数。再比如数字99 ÷ 2 无法除尽9 ÷ 3 可以除尽余数为0存在可以整除的数所以 9不是质数。二、第一步拆解实现「单个数字判断质数」最简逻辑复杂问题拆分原则先做单点再做批量先实现简单功能再叠加复杂逻辑。我们不直接求1000以内所有质数先实现第一个小目标写一段代码判断任意一个固定数字是不是质数。2.1 编程逻辑转化把质数的判断规则翻译成代码思路对于一个数字 value遍历 2 到 value-1 的所有数字排除1和自身依次用 value 对遍历的数字取余只要有一次余数为0说明能被整除不是质数直接终止循环如果全部遍历完没有一次能整除就是质数2.2 固定值判断质数可直接运行我们先写死一个值以 value 9 为例测试逻辑value 9 # 固定一个待判断的数字 for i in range(2, value): # 遍历2到value-1的所有数 if value % i 0: # 判断是否能整除余数为0 print(f{value}不是质数) break # 一旦找到约数直接结束循环无需继续判断 else: # for循环正常结束没有触发break执行else逻辑 print(f{value}是质数)2.3 代码核心细节解释range(2, value)完美覆盖2到当前数字前所有数符合质数判断规则break优化效率找到一个约数就无需继续判断for...else 语法Python专属优质语法else 仅在循环正常走完、没有触发break时执行精准匹配质数判断场景大家可以修改 value 的值测试比如2、5、7、8三、第二步拆解从「单数字判断」升级「批量遍历数字」搞定了单个数字的质数判断我们再拆解第二个小目标遍历1~1000的所有数字让每个数字都执行一次上面的判断逻辑。这就是复杂嵌套逻辑的核心外层循环负责批量遍历内层循环负责单次判断。外层循环不断地提供数字 内层循环不断的判断该数是不是质数3.1 先搭建外层遍历框架首先写出遍历1000以内所有数字的循环框架先占位不实现逻辑# 遍历2~999所有数字1不是质数直接从2开始 for value in range(2, 1000): # 后续放入单个数字的质数判断逻辑 pass小优化1既不是质数也不是合数所以我们直接从2开始遍历减少无效运算。3.2 拼接内层判断逻辑核心嵌套把我们第一步写好的「单数字质数判断代码」直接放进外层循环内部就完成了逻辑拼接# 外层循环遍历1000以内所有需要判断的数字 for value in range(2, 1000): # 内层循环判断当前数字是否为质数 for i in range(2, value): if value % i 0: print(f{value}不是质数) break # 内层循环无break说明是质数 else: print(f{value}是质数)四、完整复盘复杂逻辑的分步拆解思维看完代码相信大家已经看懂了结果但更重要的是学会解题思维。以后遇到任何复杂编程问题都可以用这套拆解方法第一步拆解需求剥离核心规则原需求求1000以内所有质数核心规则明确质数的数学定义转化为计算机可识别的判断逻辑第二步化繁为简先实现最小单元不追求一步到位先实现「判断一个数是否为质数」的基础功能跑通最简逻辑第三步叠加扩展批量复用基础逻辑用外层循环批量遍历目标范围把已经跑通的基础逻辑嵌套复用第四步微调优化完善细节剔除无效数字1、用break优化循环效率、利用for-else精准匹配场景五、最终成品代码可直接复制运行下面是优化后的完整代码自动打印1000以内所有质数for value in range(2, 1000) for i in range(2, value): if value % i 0: print(f{value}不是质数) break else: print(f{value}是质数)六、写给初学编程的你绝大多数人学编程卡壳不是不会语法是不会拆分问题。看到「求1000以内质数」这种复杂需求直接写双层循环会一脸懵但只要拆开先判断一个数、再批量判断难度直接降为0。记住一个核心公式复杂程序 基础语法 分步拆解 逻辑复用。