今天继续,答案都通过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的数加入列表中。