Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, 05-25-2008
ピタゴラス数をみつけよう の続きというか解説.原始ピタゴラス数とかの意味についてはそこに書いてある.
ピタゴラス数をみつけるのは意外と簡単.まず整数をふたつ思い浮かべる.m と n.例えば m = 7 と n = 3.どんな数を選んでも, m2 + n2 と 2mn と m2 - n2 がピタゴラス数になる. 72 + 32 = 58 で 2mn = 42 で 72 - 32 = 40.
582 = 3364,422 + 402 = 1764 + 1600 = 3364.
(m2 + n2)2 と (m2 - n2)2 + (2mn)2 が必ず等しくなる.展開してみると判る.
だから,m と n が与えられて,そこからピタゴラス数を作るのはとても簡単.計算機があればできる.ちょっとプログラムしないといけないのは,ピタゴラス数を与えられて,その数を作る全ての m と n をみつけようとしているから.
上の例で,40 を含むピタゴラス数をみつけよう!だったら少し難しくなる.実際,40 を含むピタゴラス数は全部で 8個あるから,計算機でパタパタする領域を少し超えている.
与えられた数を含むピタゴラス数を全てみつけようとするときに役立つ事実.
1.原始ピタゴラス数でないものは,必ず原始ピタゴラス数の何倍かになっている.
2.原始ピタゴラス数を作るには m と n の一つが偶数でもう一つが奇数,さらに,m と n が互いに素でなくてはならない.
3.4 の倍数でない偶数を含む原始ピタゴラス数は存在しない.
という訳で,40 を含むピタゴラス数をみつけるには,40を含む原始ピタゴラス数と,40 の因数,1,2,4,5,8,10,20 を含む原始ピタゴラス数をみつけて,後で 40 になるように何倍かしてあげればよい.3,4,5 が一番小さい原始ピタゴラス数で, 1 とか 2 を含む原始ピタゴラス数は存在しないので,4,5,8,10,20 だけ考えればよい.
とりあえず,40 を含む原始ピタゴラス数をみつける.
m, n のどちらかが奇数でもうひとつが偶数なので,m2 + n2 と m2 - n2 は必ず奇数になる.だから, 2mn = 40 となる m と n をみつければよい.つまり,m × n = 20 で,m と n のうちひとつが偶数,ひとつが奇数,さらに互いに素.数が小さいうちはコンピュータを使わずに解ける. m = 5, n = 4 だ.もちろん一つだけとは限らない.
あとは 4,5,8,10,20 なんだけど,上記の事実3によって 10 を含む原始ピタゴラス数はないことがわかる.
4,8,20 は 40 の時と同じように考えれば解ける.
奇数の時は,m2 + n2 と m2 - n2 が与えられた数になるようにしなくてはならない.m2 + n2 =5 と m2 - n2 = 5 だ.
m2 + n2 を与えられた数にするには,とりあえずしらみつぶしに調べる.ま,効率的にやるやり方はあるけれど,基本的に試してみる.今回の例だと, 22 + 12 = 5 なので m=2, n=1 だ.
m2 - n2 の方は,m2 - n2 = (m+n)(m-n) とできるので,また与えられた数の因数を調べればよい.5 は素数なので,5 = 5 x 1 としか分けようがなくて,m+n=5,m-n=1 の連立方程式を解けば m=3,n=2 が求められる (数学用語だと『求まる』).
ピタゴラス数をみつけようのプログラムは,これを効率よくやっているだけ.考え方自体は非常に簡単だ.
(たぶん)もう1回続く.