Pythonで双子素数を生成する方法をわかりやすく解説
双子素数(ツインプライム)とは、差が2となる素数のペアのことです。最初に現れる双子素数は {3, 5}、{5, 7}、{11, 13}、{17, 19} などがあります。
Pythonでは、forループで範囲内の数値を順番に調べながら、その都度素数判定を行うことで、双子素数を簡単に生成できます。
サンプルコード
def is_prime(n):
for i in range(2, n):
if n % i == 0:
return False
return True
def generate_twins(start, end):
for i in range(start, end):
j = i + 2
if(is_prime(i) and is_prime(j)):
print("{:d} and {:d}".format(i, j))
generate_twins(2, 100)コードの解説
- is_prime(n):2からn-1までのすべての整数で割り切れるかを確認します。割り切れる数があればFalse(素数ではない)、なければTrue(素数)を返します。
- generate_twins(start, end):startからendまでの各数値iについて、i+2も素数かどうかをチェックし、両方が素数であればペアとして出力します。
実行結果
上記のコードを実行すると、次の出力が得られます。
3 and 5 5 and 7 11 and 13 17 and 19 29 and 31 41 and 43 59 and 61 71 and 73
パフォーマンスを改善するポイント
上記のis_prime関数はシンプルですが、大きな数値を扱う場合には処理が遅くなります。判定範囲を数値の平方根までに限定することで、効率を大幅に向上させられます。
import math
def is_prime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return Trueこのように工夫することで、より広い範囲の双子素数を高速に探索できるようになります。ぜひ試してみてください。
-
PythonのBokehを使ってインタラクティブな散布図を生成する方法
Bokehとは?Bokehは、Pythonでデータ可視化を行うためのオープンソースのパッケージです。最大の特徴は、HTMLとJavaScriptを使ってグラフを描画する点にあり、Webベースのダッシュボードを構築する際に特に威力を発揮します。仕組みとしては、BokehがデータソースをJSONファイルに変換し、それをJavaScriptライブラリである「BokehJS」への入力として渡します。BokehJSはTypeScriptで実装されており、モダンブラウザ上で高速に可視化をレンダリングできるのが強みです。Matplotlib・Seabornとの違いMatplotlibやSeabornが静的な
-
PythonのpyqrcodeモジュールでQRコードを生成する方法
QRコードは、白い背景の上に黒い四角形を格子状に配置した2次元コードで、カメラなどの画像読み取り装置によって読み取ることができます。商業用途での在庫追跡や決済、ウェブサイトへのログインなど、スマートフォンユーザー向けのさまざまなアプリケーションで広く利用されています。Pythonではpyqrcodeモジュールを使うことで、簡単にQRコードを生成できます。QRコードには、データを効率的に格納するための4つの標準エンコードモード(数値モード、英数字モード、バイト/バイナリモード、漢字モード)が用意されています。英数字のQRコードを生成するpyqrcodeモジュールには、QRコードを生成するためのc