Python质数求和

img


代码是写出来了,但是突然就看不懂了,主要是那个if i%j==0那一步让我有点疑惑,%两边的数字可以相等吗?如果两边都同时取到2不就余数为0了吗?但是这个时候break了意思是2不就不算了吗?就是这段把我整糊涂了,这种for循环下求质数和的原理希望大家给我掰开讲一讲

取模运算2边数字可以相等,取模后返回0。

主要是这句 range(2,i),i为2时range(2,2),是不执行循环的,已经大于等于上限了

你要理解质数的判断条件
内循环就是判断i是否为质数,i为质数的条件是,从2到i-1间的所有数,都不可整除i
也就是说,如果i是j的倍数(也就是i%j==0),那么说明i不是质数,内层循环直接可以break结束掉,不用往后判断了。
======
但是如果同时取4呢?那余数也是0啊---啥意思?你是指i为4,还是j为4?

if i%j==0
这一步是指余数为0,即整除时

首先上质数的定义:
质数又被称为素数,是指一个大于1的自然数,除了1和它自身外,不能被其它自然数整除
。i%j的意思是取余,5%2 = 1 ,2%2 = 0, 4%2 = 0。所以整个程序的意思就是i能被2到i-1范围内的j整除时跳过,
这个break只能影响第二层循环,i还会增加。
而当第二层循环跑完没有触发break时,再将i添加进sum中。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632