鱼C论坛

 找回密码
 立即注册
查看: 1864|回复: 7

[已解决]小白不懂系列,关于for循环

[复制链接]
发表于 2022-5-13 21:59:57 | 显示全部楼层 |阅读模式
20鱼币
①循环n=range(2,10)提取2-10之间的数值范围(2,3,4,5,6,7,8,9,)一直循环到10
②循环x=range(2,n)提取2-n之间的数值范围,比如n=3,那x也是取2到3之间范围
③如果n%x==0,就打印下面的输出信息,比如:现在的n=4,那么也是x=4,以此类推
④如果n=4,x=4,那么公式就是这样写4=4*4//4
⑤是返回上一层

那么得出得答案是2,3,5,7都是素数
4,6,8,9就不是呢


求通俗易懂的解题思路!!!!
因为本人数学不太好
最佳答案
2022-5-13 21:59:58

①、②:range(2, 10) 是从 2~9 没有 10 ,同理  range(2, n) 是 2 ~ (n-1)

③、④:理解没错,需要注意 % 是求余符号, 4 % 2 也是 为 0 ,所以也成立

通俗理解:因为素数定义是除 1 和 自身以外不能被任何整数整除的数,所以嵌套了两层循环

第一层用于表示此时的数,第二层用于遍历 2 到 自身-1 的数,只要在循环中发现一个 x 数 对 n 整除时,说明他不满足 素数 条件,就直接进入 if 循环 break 退出

而又因为 for - else 结构中,else 执行的条件是循环正常退出(不遇到 break)才能执行 else 代码,所以若不是素数则就是通过 break 退出循环,而后不执行 else ,开始下一次循环

122.png

最佳答案

查看完整内容

①、②:range(2, 10) 是从 2~9 没有 10 ,同理 range(2, n) 是 2 ~ (n-1) ③、④:理解没错,需要注意 % 是求余符号, 4 % 2 也是 为 0 ,所以也成立 通俗理解:因为素数定义是除 1 和 自身以外不能被任何整数整除的数,所以嵌套了两层循环 第一层用于表示此时的数,第二层用于遍历 2 到 自身-1 的数,只要在循环中发现一个 x 数 对 n 整除时,说明他不满足 素数 条件,就直接进入 if 循环 break 退出 而又因为 fo ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-13 21:59:58 | 显示全部楼层    本楼为最佳答案   

①、②:range(2, 10) 是从 2~9 没有 10 ,同理  range(2, n) 是 2 ~ (n-1)

③、④:理解没错,需要注意 % 是求余符号, 4 % 2 也是 为 0 ,所以也成立

通俗理解:因为素数定义是除 1 和 自身以外不能被任何整数整除的数,所以嵌套了两层循环

第一层用于表示此时的数,第二层用于遍历 2 到 自身-1 的数,只要在循环中发现一个 x 数 对 n 整除时,说明他不满足 素数 条件,就直接进入 if 循环 break 退出

而又因为 for - else 结构中,else 执行的条件是循环正常退出(不遇到 break)才能执行 else 代码,所以若不是素数则就是通过 break 退出循环,而后不执行 else ,开始下一次循环

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-13 22:10:59 From FishC Mobile | 显示全部楼层
4 6 8 9 本来就不是素数啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-14 08:09:41 | 显示全部楼层
这个思路就是把比这个数字小的每一个数字判断一遍是否可以除尽,挺通俗易懂的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-16 17:06:15 | 显示全部楼层
首先,编程方面,你这个题目是挑出10以内的素数。
其次,数学方面,素数是出了1和本身,没有其他因数的数,换句话说,数本身除以比它小的数,除了1和本身外没有能够整除的。
其三,你这个运行结果是正确的。
其四,数学不好很容易,可以问度娘。我毕业15年后重新捡起三角函数,用了俩月。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-19 00:38:27 | 显示全部楼层
这道题目巧妙的用到了for-else的结构,而不是平时用的if-else,for-else是for循环完毕后执行esle中的代码,当下n=2时range(2,2)值为空,循环直接结束执行else中的代码:2是一个素数,当n=3,5,7时n % x == 均无法成立正常结束for循环执行else得出 3,5,7是一个素数,当n=4,6,8,9时n % x == 0 成立,得出4,6,8,9不是素数,并执行break终止当前循环,break不是返回上一层而是终止当前的for循环,不再执行后面的else
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-19 11:33:55 | 显示全部楼层
4689是素数吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-19 21:42:12 | 显示全部楼层
代码是怎么得出这个结果的呢?

看第一层for循环,n从2到9,就是对这些数进行判断,判断它们是否是素数。
第二层循环,x从2到 n-1,这就涉及到素数的定义了,对于每个n,只要有除了1和它本身以外的数是它的因数,也就是说它能被这个除了1和它本身以外的数 整除(没有余数就是整除),那就证明这个数n不是素数,也就是里面的这个if所判断的条件,这个条件满足就说明能被整除,就不是素数,一直从x=2判断到x=这个数减一,如果有if成立,就跳出for...else循环,进行第一层的下一次循环,如果if一直都不成立,那就直到二层for循环结束,进入for...else的else,输出“某数是一个素数”。

需要注意的是,下面那个else是和for一起的,而不是和里面的if对应的,它组成的是for...else结构而不是if...else结构,而break跳出的是整个二层循环for...else结构,break执行后是不执行else里面的语句的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 18:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表