コンピュータ「オイラと数学しよう」 ――オイラープロジェクトの問題にチャレンジ(その2)無償ソフトで技術計算しよう【プログラミング応用編】(3)(3/3 ページ)

» 2014年12月12日 10時00分 公開
[伊藤孝宏,MONOist]
前のページへ 1|2|3       

問題9

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;
ex332.m

>>「ex332.m」ダウンロード

 例は3、4、5なので、入力するnは3+4+5=12で、得られる答えは、3×4×5=60となるはずです。コマンドウィンドウに以下のように入力すると、正しいことが分かります。

--> ex332(12)
ans = 60

 本番の1000を入力してみると、以下の答えが得られます。

--> ex332(1000)
ans = 31875000

 オイラープロジェクトの問題は、問題文の始めにある例を確認するだけでも勉強になります。興味のある方はチャレンジしてみてください。

 プログラミング応用編は今回で終わりです。FreeMatで数値シミュレーションを行う「シミュレーション編」に続きます。

参考文献

  • 「MATLABハンドブック」小林一行著、秀和システム刊
  • 「はじめてのFreeMat」赤間世紀著、工学社刊

無償ソフトで技術計算しよう

FreeMat

無償の工学計算ソフトでも、かなり高度な計算ができる!


筆者紹介

伊藤孝宏(いとう・たかひろ)

1960年生。小型モーターメーカーのエンジニア。博士(工学)。専門は流体工学、音・振動工学。現在は、LabVIEWを使って、音不良の計測・診断ソフト、特性自動検査装置などの開発を行っている。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.