於是有人提出可以再改進效能,質數檢查只需要檢查2以及奇數,只需要檢查到平方根,一行指令找質數程式碼如下:
print([n for n in range(3,3000,2) if not any(n%i==0 for i in range(3,int(n**0.5)+1,2))])
執行結果:
輸人不輸陣,就有人會說"想比短嗎?"
print([n for n in range(2, 30) if all (n % i for i in range(2, n))])
執行結果:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
SymPy是什麼呢?
SymPy is a Python library for symbolic mathematics.
網址:https://www.sympy.org/en/index.html
SymPy是一個數學函式庫,以Python為基礎的免費輕量級的函式庫。
isprime(k): k 是不是質數
以上兩個是我最常用的, 但還有很多, 像是:
nextprime(k): k 之後下一個質數
primerange(a,b): [a, b) 中的質數
randprime(a,b): [a, b) 中的質數隨機抽一個出來
看起來果然好用,使用前不要忘了要用pip安裝。
pip install SymPy
範例:取得第10個質數
from sympy import *
print(prime(10))
執行結果:
29
SymPy有許多數學函式,大家不坊試試。
大家討論到求質數的情形,請參閱下列連結。
沒有留言:
張貼留言