LoginSignup
1
1

[Python]途中まで素数を求める方法[オイラー]

Last updated at Posted at 2021-11-03

はじめに

備忘録として残します🐍
Python3環境下にて、是非お使いください🎸

素数とは

素数とは、1とその数字以外に割ることができない孤独な数字です。
これは、ある素数NはNはN-1の整数倍で表すことができないという意味でもあります。
素数係数関数(Π(x))や素数定理などの発見はあるものの、数式で求めることはできません。
暗号方式の一つであるRSA暗号は、100桁以上の素数の難発見性の性質を利用しています。

現在の主流なIT技術にも貢献している素数ですが、
nが整数のとき、-40≦n≦40の範囲で素数を生成する式が存在します。

今回は、生成式のコーディングとn=0~40の出力結果を参考までに御覧ください。
素数を詳しく知りたい方は、数学者ガウスやオイラーについて調べてみるといいでしょう。

※n^2-n+41は二次関数で、n=-1のとき43、n=-2のとき47という具合に
対称性が保証されているため、出力結果を省略いたします。

▶外部ライブラリにつき、予めインストールを要します。(以下、入力例)

bash/zsh
conda install sympy #エラーが起これば、下のコマンドを実行してください。
pip install sympy 

本編

数式

オイラー 素数生成式(Lucky Numbers Of Euler):  f\left(n \right)= n^{\!2}-n+41

コーディング

python
from sympy import *
n = Symbol("n")
seq = sequence(n**2 - n + 41, (n,0,40))

#以下、出力
print([int(i) for i in seq])

出力結果
[41,41, 43, 47, 53, 61, 71, 83, 97, 113, 131, 151, 173, 197, 223, 251, 281, 313, 347, 383, 421, 461, 503, 547, 593, 641, 691, 743, 797, 853, 911, 971, 1033, 1097, 1163, 1231, 1301, 1373, 1447, 1523, 1601]

References

More Info

About me

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1