小白不懂系列,关于for循环
①循环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就不是呢
求通俗易懂的解题思路!!!!
因为本人数学不太好
①、②: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 ,开始下一次循环
4 6 8 9 本来就不是素数啊 这个思路就是把比这个数字小的每一个数字判断一遍是否可以除尽,挺通俗易懂的啊{:10_256:} 首先,编程方面,你这个题目是挑出10以内的素数。
其次,数学方面,素数是出了1和本身,没有其他因数的数,换句话说,数本身除以比它小的数,除了1和本身外没有能够整除的。
其三,你这个运行结果是正确的。
其四,数学不好很容易,可以问度娘。我毕业15年后重新捡起三角函数,用了俩月。 这道题目巧妙的用到了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 4689是素数吗?
代码是怎么得出这个结果的呢?
看第一层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里面的语句的。
页:
[1]