今天做到一题利用for循环求100以内素数之和的题目,发现自己在Python的语法上遇到了问题:这个else是谁的?在此记录以防下次又做错啦。
素数指从大于1,且仅能被1和自己整除的整数。 可以逐一判断100以内每个数是否为素数,然后求和。
一开始我的程序是这样的:
sum = 0 for i in range(2,100):#寻找的范围为2-99 for j in range(2,i): if (i%j == 0): break else: sum += i print(sum)
sum = 0 for i in range(2,100):#寻找的范围为2-99 for j in range(2,i): if (i%j == 0): break else: print(i) #sum += i #print(sum)
果然输出的素数是有问题的。查看结果发现找到的素数出现了多次输出甚至输出非素数的情况,加起来当然比正确答案大的多啦。
可是为什么会出现这样的错误呢?
所以,在上面这个程序中,双层for嵌套后利用了一个if-else二分支。如果满足条件:i对j取余数为零(i
这里的“else”是for的,还是if的?显然,应该是for的。只有遍历全部j后依然除不尽的才能够认为i为素数并输出。写程序时太粗心写错了else的位置;对于Python语法的不熟练没能透彻的结合题目的意思。意识到问题所在,修改程序
sum = 0 for i in range(2,100): for j in range(2,i): if (i%j == 0): break else: sum += i print(sum)
输出sum=1060,是正确答案!
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218540.html原文链接:https://javaforall.net
