程序分析:
一个大于 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)
二, 参考解法:
使用函数解法
- from math import sqrt
- 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
- for j in range(101,201):
- 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))
来源: http://www.bubuko.com/infodetail-2656488.html