题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
程序源代码:
# -*- 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:
l.append(i)
print l
"""
#更加精简的方法
# -*- coding: UTF-8 -*-
import math
l = []
for i in range(101,x+1):
#如果是非素数,退出运行
if i % y == 0 and i != y:
break
#如果是素数,把值增加到L列表
if i % y != 0:
l.append(i)
print l
"""
print l
输出结果:
[101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199]
另外一种方法:
# -*- coding: UTF-8 -*-
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):
k = int(sqrt(m + 1))
for i in range(2,k + 1):
if m % i == 0:
leap = 0
break
if leap == 1:
print '%-4d' % m
h += 1
if h % 10 == 0:
print ''
leap = 1
print 'The total is %d' % h
输出结果:
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
The total is 21