Pythonで数学をやってみよう!- フェルマーの小定理
数学×Pythonということで、数学をPythonでプログラムを組んで解説してあります。早速やっていきます。
1回目はプログラミングの環境の説明から、GoogleのColabを使っています。ほんとこれ便利でいろんなライブラリも、必要ならライブラリもインストールできます。
実際には2回目からになります。
この定理をプログラミングで組むことから始まっています。
aの(p-1)乗をpで割った余りが1になるということです。例えばということでPythonでかくと、
16348039**(3571-1) % 3571
“**“はべき数、2の2乗は2*2で4、2の3乗は2*2*2は8ということです。
“%“は割り算をした余りです、
7%5は”2”です。7は5で割ることができ、余りが”2”ということです。
これを便利な関数というものにして計算しやすくするようにすすんでいきます。変数の説明と関数の説明がしてあります。
変数を使うことで数字を自由に変えることがd家いるようになります。そして関数にすると、定形な計算を予め変数を使い組んでおき、好きな数字を入れると何度でも計算できるようになります。ここでは
def fermat_little(a, p):
return a**(p-1) % p
と定義されています。Pythonで関数を組むときの約束、一番前に
”def”をつける。その次に関数名、ここでは”fermat_little”でその次に使いたい数字を入れる変数(これを引数と呼びます)を定義してその終わりの印に”:”をつけます。これで宣言の部分は終わりです。
Pythonでは行を変えるときにインデントと呼ばれる文字の前に空白を入れてその改行を明確にするようになっています。このインデントがない場合はエラーとなるので気を付けないといけません。
そして”return”ですがこれがちょっと理解が難しいかもしれません。要するに値をこの関数自体で表すことができ、変数に代入することができるようになります。返り値と呼びます。
結果的には引数aとpをに数字を入れて実行することで計算されるようになり答えが返り値となって算出されます。
Colabで関数定義したあとに以下で実行すると”1”が答えとして出力されます。
fermat_little(16348039, 3571)
通常使うときは変数に入れてその数字を利用してさらにプログラムを組むことができます。変数に入ったどうかを”print()”関数で確かめることができまうす。
result = fermat_little(16348039, 3571)
print(result)
これで同じように”1”が計算されていることがわかります。
次にPythonであらかじめ用意してある関数を使いプログラムを組んでみます。数学の関数としては”math”というのがあり
import math
としてあらかじめ読み込む必要があります。例示では
import math
math.gcd(16348039, 3571)
として最大公約数を出しています。
ルールとして”math.gcd”という感じで使います。”gcd”というのが最大公約数を計算する関数の名前です。
以下では計算しきからプログラムへ導く練習問題として
アンドリカの予想をプログラミングする
import math
def andrica(p, q):
return math.sqrt(q)-math.sqrt(p)
計算式をルートをmath.sqrt()を使って計算させています。
超球の体積を求める
import math
def nsphere_volume(n):
v = math.pi**(n/2) / math.gamma(n/2+1)
return v
これもπをmath.piを使いn/2乗してものを、γ関数を使ってn/2に1を足したものを処理したもので割って計算しています。ここでは変数vに入れて、returnでその変数vを返しています。
この記事が気に入ったらサポートをしてみませんか?