python 这段代码为什么会运算结果有问题

import math
l = []
for i in range(101,201):
x = int(math.sqrt(i))
#用i 分别除以int(math.sqrt(i))的值,查看i是否是素数
for y in range(2,x+1):
#如果是非素数,退出运行
if i % y == 0 and i != y:
break
#如果是素数,把值增加到L列表
​if i % y != 0:
​ l.append(i)print l
​print l

# -*- coding: utf-8 -*-
import math
l = []
for i in range(101,201):
    x = int(math.sqrt(i))   #用i 分别除以int(math.sqrt(i))的值,查看i是否是素数
    for y in range(2,x+1):       #如果是非素数,退出运行       
     if i % y == 0 and i != y:
      break
     if i % y != 0 and i not in l:
      l.append(i)
print l

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-26

你的逻辑和语法上都有一些错误

我修改了下:

# -*- coding: utf-8 -*-
import math
l = []
for i in range(101,201):
    x = int(math.sqrt(i))
    flag=1
    for y in range(2,x+1):
        if i%y == 0:
            flag=0
            break
    if flag:
        l.append(i)
print l


希望我的回答可以帮到你

追问

你好,为什么要把第二个if和for 并列?

追答

整个逻辑的目的是:当有一个i%y是0就说明能够整除,因此要所有的y全部不能被整除才能证明i是素数,这里看标志位flag,在for循环中只要有一次满足if的条件,就会被清零,for里面省略了else是因为一次的不能够被整除并不能说明什么,你之前的逻辑问题也主要出现在那里

本回答被提问者采纳
相似回答