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回続く.

平成17 平成18 平成19 平成20 平成21 平成22 平成23 平成24 平成25 平成26 平成27 平成28 平成29 平成30 令和元 令和2 令和3 令和4 令和5 令和6 令和7 令和810111210111213141516171819202122232425262728293031日 日曜日|どうしても分類不可コメント(2)

ブログ検索

カレンダー

JanFebMar AprMay JunJulAugSepOctNovDec 2005200620072008200920102011
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

履歴

2020年01月 (1)

2019年11月 (1)

2019年10月 (1)

2019年08月 (1)

2019年07月 (1)

2019年05月 (1)

2019年03月 (1)

2019年02月 (1)

2019年01月 (1)

2018年12月 (1)

2018年11月 (1)

2018年10月 (1)

2018年09月 (1)

2018年08月 (1)

2018年07月 (1)

2018年06月 (1)

2018年05月 (1)

2018年04月 (2)

2018年03月 (1)

2018年01月 (1)

2017年12月 (1)

2017年11月 (1)

2017年10月 (1)

2017年09月 (1)

2017年08月 (1)

2017年07月 (1)

2017年06月 (1)

2017年05月 (1)

2017年04月 (1)

2017年03月 (1)

2017年02月 (1)

2017年01月 (1)

2016年12月 (1)

2016年11月 (1)

2016年09月 (1)

2016年08月 (1)

2016年07月 (1)

2016年05月 (1)

2016年04月 (1)

2016年03月 (1)

2016年02月 (1)

2016年01月 (1)

2015年12月 (1)

2015年07月 (1)

2015年06月 (2)

2015年05月 (2)

2015年04月 (3)

2015年03月 (2)

2015年02月 (1)

2015年01月 (3)

2014年12月 (1)

2014年11月 (1)

2014年10月 (2)

2014年09月 (2)

2014年08月 (2)

2014年07月 (1)

2014年06月 (1)

2014年05月 (2)

2014年04月 (1)

2014年03月 (2)

2014年02月 (1)

2014年01月 (2)

2013年12月 (1)

2013年11月 (3)

2013年10月 (2)

2013年09月 (1)

2013年08月 (4)

2013年07月 (1)

2013年06月 (2)

2013年05月 (2)

2013年04月 (3)

2013年03月 (1)

2013年02月 (1)

2013年01月 (4)

2012年12月 (1)

2012年11月 (3)

2012年10月 (1)

2012年09月 (1)

2012年08月 (3)

2012年07月 (3)

2012年06月 (2)

2012年05月 (6)

2012年04月 (2)

2012年03月 (8)

2012年02月 (2)

2012年01月 (1)

2011年12月 (6)

2011年11月 (5)

2011年10月 (4)

2011年09月 (6)

2011年08月 (9)

2011年07月 (5)

2011年06月 (5)

2011年05月 (5)

2011年04月 (6)

2011年03月 (17)

2011年02月 (6)

2011年01月 (10)

2010年12月 (10)

2010年11月 (4)

2010年10月 (6)

2010年09月 (5)

2010年08月 (11)

2010年07月 (8)

2010年06月 (8)

2010年05月 (3)

2010年04月 (8)

2010年03月 (11)

2010年02月 (4)

2010年01月 (8)

2009年12月 (6)

2009年11月 (6)

2009年10月 (6)

2009年09月 (7)

2009年08月 (6)

2009年07月 (10)

2009年06月 (10)

2009年05月 (10)

2009年04月 (6)

2009年03月 (7)

2009年02月 (9)

2009年01月 (12)

2008年12月 (6)

2008年11月 (10)

2008年10月 (8)

2008年09月 (9)

2008年08月 (12)

2008年07月 (8)

2008年06月 (12)

2008年05月 (12)

2008年04月 (12)

2008年03月 (11)

2008年02月 (10)

2008年01月 (10)

2007年12月 (12)

2007年11月 (14)

2007年10月 (13)

2007年09月 (11)

2007年08月 (16)

2007年07月 (10)

2007年06月 (10)

2007年05月 (6)

2007年04月 (10)

2007年03月 (13)

2007年02月 (10)

2007年01月 (8)

2006年12月 (13)

2006年11月 (15)

2006年10月 (9)

2006年09月 (8)

2006年08月 (18)

2006年07月 (14)

2006年06月 (16)

2006年05月 (23)

2006年04月 (20)

2006年03月 (12)

2006年02月 (14)

2006年01月 (21)

2005年12月 (20)

2005年11月 (17)

2005年10月 (18)

2005年09月 (16)

2005年08月 (10)

2005年07月 (6)