導航:首頁 > 編程語言 > python盧卡斯素數

python盧卡斯素數

發布時間:2023-07-13 01:07:06

『壹』 python求200以內的素數

# 求200以內的素數
primes = []
for n in range(2,201):
for i in range(2,int(n**(1/2))+1):
if n % i == 0:
break
else:
primes += [n]
print(primes)

程序縮進如圖所示

『貳』 python求素數的個數

求素數本質上的演算法還是:除了1和它本身之外的數都不能整除的數。

在網上看到了一種用一行就解決的代碼:

" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])
對這段代碼分解,最後一段列表生成式[y for y in range(2,x) if x%y == 0]這個就是核心演算法y是從2到x-1的數,x只要能對y整除,配上前面的if not,就是,x不能被2到x-1的數整除,再看前面一段,x for x in range(2,100) 其實就是讓x從2到100的取值。我們這假設題目就是求100內的素數。其實代碼到這就得出結果了,只要在這些代碼外面加上[]就是一個列表生成式了:

[x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0]]
那麼為什麼還加上了" ".join("%s" % 。。。)這段代碼呢?其實只是格式化美觀罷了,"%s" %是一種字元串格式化的語法, 基本用法是將值插入到%s佔位符的字元串中,join() 方法用於將序列中的元素以指定的字元連接生成一個新的字元串。
下面是結果:

'2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97'
這樣解析出來是個字元串還不能分割,所以我重新改了一下:

a = (" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])).split()
list1 = []
for item in (a):
list1.append(int(item))
print(list1)
split()把字元串解析成列表,然後給列表每一項都轉化成數字。
在數學里,我們還有種判斷素數的簡化方法:即y的取值范圍是2到x的平方根+1

import math
(" ".join("%s" % x for x in range(2,100) if not [y for y in range(2, int(math.sqrt(x))+1) if x%y == 0])).split()
下面是一種正常的演算法:
import math
num = []
i = 2
for i in range(2,100):
j = 2;
for j in range(2,int(math.sqrt(i)+1)):
if (i%j==0):
break;
else:
num.append(i)
print(num)

閱讀全文

與python盧卡斯素數相關的資料

熱點內容
在伴伴app裡面怎麼拜師傅 瀏覽:942
編程珠璣筆記 瀏覽:280
結束命令行 瀏覽:268
力學原理pdf 瀏覽:736
宏定義編譯後不變 瀏覽:404
如何搞免費伺服器 瀏覽:212
神經系統pdf 瀏覽:672
如何查看伺服器上的資料庫伺服器 瀏覽:195
壓縮機型號v代表什麼 瀏覽:58
旅遊類源碼 瀏覽:867
電腦伺服器類型怎麼設置 瀏覽:235
pdf炒股 瀏覽:791
伺服器地址缺少埠號什麼意思 瀏覽:535
下載需要解壓的小說用哪個軟體 瀏覽:539
廣東分布式伺服器雲主機 瀏覽:588
伺服器忙打不開怎麼辦 瀏覽:20
tif壓縮軟體 瀏覽:418
程序員那麼可愛陸漓上班第1天 瀏覽:952
macbookair自帶什麼app 瀏覽:707
如何關了加密的軟體 瀏覽:587