python2.7练习小例子(十一)
生活随笔
收集整理的這篇文章主要介紹了
python2.7练习小例子(十一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
11):題目:判斷101-200之間有多少個素數,并輸出所有素數。
程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
程序源代碼:
#!/usr/bin/python
# -*- 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
使用集合解法:
#!/usr/bin/python
# -*- coding: UTF-8 -*- l = []
for i in range(101,200):
for j in range(2,i-1):
if i%j ==0:
break
else:
l.append(i) print(l) print("總數為:%d" % len(l))
#!/usr/bin/python
# -*- coding: UTF-8 -*-# from math import sqrt count=0
pn=1
for i in range(101,201):
k=int(sqrt(i))
for j in range(2,k+1):
if i%j==0:
pn=0
break
if pn==1:
count+=1
print i
pn=1
print "total number is %d"%count
Python3 測試實例:
#!/usr/bin/python3 list1 = []
list2 = []
for x in range(2, 101):
for i in range(2, x+1):
sum = x * i
if (sum < 200) & (sum > 101):
list1.append(sum)
for m in range(101, 200):
list2.append(m)
list3 = list(set(list2) ^ set(list1))
print(list1, '\n')
print(list3)
print("總數為:", len(list3))
判斷素數的方式我選用了排除法,采用切片復制原有列表,逐一排除非素數,則剩余的列表中元素皆為素數:
#!/usr/bin/python
# -*- coding: UTF-8 -*- import math
m=range(101,201)
p=m[:]
for i in range(101,201):
for j in range(2,int(math.sqrt(i)+1)):
if i % j == 0:
p.remove(i)
break
print(p)
print("101至200之間的素數一共有%d個"%len(p))
#!/usr/bin/python
# -*- coding: UTF-8 -*- import math def sushu():
result = []
for i in range(101,201):
flag = True
for j in range(2,int(math.sqrt(i))+1):
if i % j == 0:
flag = False
continue
if flag == True:
result.append(i)
print result sushu()
#!/usr/bin/python
# -*- coding: UTF-8 -*- from math import sqrt l=[]
for x in range(101,201):
l.append(x)
for i in range(2,int(sqrt(x))+1):
if x%i==0:
l.pop()
break n=len(l)
print l print '總數為:',n
python3 測試實例:去除除2以外的偶數 提高效率:
#!/usr/bin/env python3 import math def sushu(start,end):
count=0
for i in range(start,end+1):
if(i%2==0 and i!=2): #去除除2以外的偶數
continue
for j in range(2,int(math.sqrt(i))+1):
if(i%j==0):
break
else:
count=count+1
print(i,end=" ")
print("")
print("count",count)
return #start=int(input("start:\n"))
#end=int(input("end:\n"))
#sushu(start,end) sushu(101,200)
# -*- coding: UTF-8 -*- def a(n):
L = []
for i in range(2,n-1):
L.append(n%i)
if 0 not in L:
return True
print filter(a,range(101,200))
Python3 測試:檢查 y 能否被 2 到 y**0.5 之間的整數整除,如果能則 break,如果不能,將該數加入列表并 break:
#!/usr/bin/python3 def prim(m, n):
arr = []
for x in range(m, n + 1):
for y in range(2, int(x ** 0.5)):
if (x / y) == int(x / y):
break
else:
arr.append(x)
break
return arr print(prim(101, 200))
迭代器:
#!/usr/bin/python
# -*- coding: UTF-8 -*- def prime():
n = 2
while 1:
for i in range(2, n+1):
if n%i:
continue
else:
if i==n :
yield n
else:
break
n+=1
L = []
for i in prime():
if 101<=i<=200:
L.append(i)
if i>=200:
break
print('一共有{}個素數,這些素數分別是:{}'.format(len(L),L))
運行結果為:
一共有21個素數,這些素數分別是:[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
生成器一行搞定:
#!/usr/bin/python
# -*- coding: UTF-8 -*- L = list(filter(lambda x: x not in set([i for i in range(101,201) for j in range(2,i) if not i%j]), range(101,201)))
print('一共有{}個素數,這些素數分別是:{}'.format(len(L),L))
好啦,到這里本次分享就結束了。如果感覺不錯的話,請多多點贊支持哦。。。
原文鏈接:https://blog.csdn.net/luyaran/article/details/80047270
總結
以上是生活随笔為你收集整理的python2.7练习小例子(十一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一套基于 .NET Core 开发的支付
- 下一篇: hiho1605 - 递推+100000