Problem 9 Special Pythagorean triplet
A Pythagorean triplet is a set of three natural numbers, a b c, for which,
a2 + b2 = c2
For example, 32 + 42 = 9 + 16 = 25 = 52.
There exists exactly one Pythagorean triplet for which a + b + c = 1000.
Find the product abc.
意味は、「ピタゴラス数とは、a2+b2=c2を満たすようなa、b、cの3つ組の数字です。例えば、32+42=9+16=25=52と、3、4、5がピタゴラス数になります。a+b+c=1000を満たすピタゴラス数a、b、cは1組だけ存在することが知られています。これらa、b、cの積を求めなさい」。
aとbのループを回します。c=n−b−aで求めたcとの間に、a2+b2=c2を満たしていれば、求めるピタゴラス数となります。以上をFreeMatのプログラムにしたのがex332.mです。
function p9=ex332(n) for a=1:n-1 for b=1:n-a c=n-b-a; if((a*a+b*b)==c*c) aa=a;bb=b;cc=c; end end end p9=aa*bb*cc;
例は3、4、5なので、入力するnは3+4+5=12で、得られる答えは、3×4×5=60となるはずです。コマンドウィンドウに以下のように入力すると、正しいことが分かります。
--> ex332(12) ans = 60
本番の1000を入力してみると、以下の答えが得られます。
--> ex332(1000) ans = 31875000
オイラープロジェクトの問題は、問題文の始めにある例を確認するだけでも勉強になります。興味のある方はチャレンジしてみてください。
プログラミング応用編は今回で終わりです。FreeMatで数値シミュレーションを行う「シミュレーション編」に続きます。
伊藤孝宏(いとう・たかひろ)
1960年生。小型モーターメーカーのエンジニア。博士(工学)。専門は流体工学、音・振動工学。現在は、LabVIEWを使って、音不良の計測・診断ソフト、特性自動検査装置などの開発を行っている。
Copyright © ITmedia, Inc. All Rights Reserved.