練習一:python實現n以內素數
#!/bin/env python
#--coding:utf-8--
import math
import sys
def prime(n):
if n <= 1:
return 0
#for i in range(2,int(math.sqrt(n)+1)):
for i in range(2,n):
if n%i == 0:
return 0
return 1
if __name__ == "__main__": //寫的指令碼模組既可以匯入到別的模組中用,另外該模組自己也可執行
n = int(sys.argv[1])
for i in range(2,n+1):
if prime(i):
print i
traceback (most recent call last):
file 「prime.py」, line 13, in
n=int(sys.argv[1])
indexerror: list index out of range
解決: python prime.py 1000
沒加引數
原理:n除比n小的所有數都為0 如果prime(n) return 1,則把i輸出
方法二:埃氏篩法
首先將2到n範圍內的整數寫下來,其中2是最小的素數。將表中所有的2的倍數劃去,表中剩下的最小的數字就是3,他不能被更小的數整除,所以3是素數。再將表中所有的3的倍數劃去……以此類推,如果表中剩餘的最小的數是m,那麼m就是素數。然後將表中所有m的倍數劃去,像這樣反覆操作,就能依次列舉n以內的素數,這樣的時間複雜度是o(nloglogn)。
#--coding:utf-8--
import sys
def prime(n):
flag = [1]*(n+2)
//為什麼flag要這麼寫?
p=2
while(p<=n):
print p
for i in range(2*p,n+1,p):
flag[i] = 0
while 1:
p += 1
if(flag[p]==1):
break
ifname== 「main「:
n = int(sys.argv[1])
prime(n)
原博連線
Python練習 迴圈素數
題目描述 數字197可以被稱為迴圈素數,因為197的三個數字迴圈移位後的數字 197,971,719均為素數。100以內這樣的數字包括13個,2,3,5,7,11,13,17,31,37,71,73,79,97。求任意正整數n以內一共有多少個這樣的迴圈素數 輸入格式 乙個正整數n 輸出格式 n以內迴...
Python基礎練習之素數
素數 質數 範圍100 200 素數判斷除了自身i和1其他任何數都不能被整除 m for i in range 100,201 n print i for j in range 2,20 print j print i,j,i j print len n if min n 0 and len n 1...
python基礎練習 判斷質數(素數)
給定乙個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。如,輸入為10,程式應該輸出結果為2。共有兩對質數的和為10,分別為 5,5 3,7 質數 0 怎麼判斷質數?定義乙個函式判斷是否是質數 1 求出整數範圍內的質數 存到列表 2 遍歷所有的質數,求出和等...