python3练习100题——012

今天继续,答案都通过py3测试。

原题链接:http://www.runoob.com/python/python-exercise-example12.html

题目:判断101-200之间有多少个素数,并输出所有素数。

程序分析判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

我的代码:

def primes():
    li=[]            
    for m in range(101,200):
        state=1
        x=int(m**0.5)      #可以不用math.sqrt()比较省事~
        for i in range(2,x+1):
            if m%i==0:      #注意是余数为0的数,才不是素数,需要break
                state=0
                break
        if state==1:
            li.append(m)
    print("total:%d" %len(li))
    print(li)
                

思考:

需要一个state变量,来判断状态。

在每个循环开始,state=1,也就是默认一个数的状态是1,表示它是素数。

只有在if语句判断成功的时候,state改为0,表示这个数不是素数了。if语句要循环判断很多次,可能其中只有1次满足了。设置state可以达到要求:只有一次满足就不是素数。

接下来再经过一个if语句,可以把所有state=1的数加入列表中。