题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:
一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数。
一、参考解法:
判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
from math import sqrt
h=0
for m in range(101,201):
leap=1
k = int(sqrt(m)) #返回数字的平方根
for i in range(2,k+1):#K+1,表示从2循环到K(包含k)
if m % i==0:
leap=0
break
if leap==1:
print('%-4d'%m)
h+=1
if h % 10==0:
print('')
print('The total is %d'%h)
二、参考解法:
使用函数解法
h=0
def su(n):
global h #声明全局变量
for i in range (2,int(sqrt(n)+1)):
if n%i==0:
return
print('%d'%n)
h +=1
if h%10==0:
print('')
return
su(j)
print('The total is %d'%h)
三、参考解法:
使用集合解法
l=[ ]
for i in range(101,200):
for j in range(2,i-1):
if i % j==0:
break
else: #for......else 中,else语句会在 for 不通过 break 跳出而中断的情况下执行。
l.append(i)
print(l)
print('总数为:%d'%len(l))
四、参考解法:
使用列表切片解法
import math
p=range(101,201)
aList=list(p)
for i in range(101,201):
for j in range(2,int(math.sqrt(i)+1)):
if i % j==0:
aList.remove(i)
break
print(aList)
print('总数为:%d'%len(aList))