project euler 9 解説

1000のピタゴラス

ピタゴラス数とは、 互いに素な自然数

a2 + b2 = c2 を満たす数の組である。

このとき,

a + b + c = 1000

となるような組み合わせを求めよ、(このabcの積を求めよ)というのが問いである。

解説

まずピタゴラス数にどんなものがあるかを考える。

例えば、

3,4,5 という組み合わせである。これは

32 + 42 = 9 + 16 = 25 = 52

となることから明白である。

他にも、 5, 12, 13 という組み合わせなどがある。

では具体的にどういう手法で求めるかというと

整数 m, n ( m > n > 0 ) があるとき、

(m2-n2, 2mn, m2+n2) ピタゴラス数になるという定理がある。これをこのブログの中ではピタゴラス式と呼称する。(正式な名前を知りません)

ということは、 a + b + c = 1000 にそれぞれ代入して2次方程式を解けばよい。

m2 - n2 + 2mn + m2 + n2 = 1000

2 m2 + 2mn = 1000

m2 + mn = 500

√500 > m > n ということがわかる(m > n > 0 より)

√500 はだいたい22なので、それ以下の数字で考える。

平方根の計算ができなくても、252 = 625からそれよりは小さいと考える。

というわけで、mに20を代入してみる。

400 + 20n = 500

となり、n=5 で成り立つ

m = 20, n = 5 で成り立つことがわかった。

そこで、ピタゴラス式に当てはめ、

m2 - n2 = 375

2mn = 200

m2 + n2 = 425

つまり、

a=200, b = 375, c = 425, abc = 31875000

多分もっとスマートなやり方もある。とりあえず臨時で友人に説明する用

おわりだよ〜


追記(2019/3/13 22:36)

f:id:aokinoko2828:20190313223533p:plain

ひどくない?