python練習1 素數

2021-08-13 19:34:00 字數 1344 閱讀 2039

練習一: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 遍歷所有的質數,求出和等...