PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 33 / 桁消去分数

49/98は面白い分数である。「分子と分母からそれぞれ9を取り除くと 49/98 = 4/8 となり,簡単な形にすることができる」と経験の浅い数学者が誤って思い込んでしまうかもしれないからである (方法は正しくないが,たまたま正しい約分になってしまう)。

我々は 30/50 = 3/5 のようなタイプは自明な例だとする。

このような分数のうち, 1より小さく分子,分母がともに2桁の数になるような自明でないものは4個ある。その4個の分数の積が約分された形で与えられたとき,分母の値を答えよ。

Problem 33 - Project Euler


Mathematica を使いましたが,この問題は手計算で解けます。以下,「分子の十の位と分母の一の位を約分」を(左,右)のようにあらわします。

(左, 左)型

(10a+b)/(10a+c)=b/c を整理すると a(b-c)=0 となり,a≠0 から b=c です。これは「1より小さい」をみたさないので不可。

(右, 右)型

(10a+b)/(10c+b)=a/c を整理すると b(a-c)=0 となり,a≠0 から a=c です。これも「1より小さい」をみたさないので不可。

(左, 右)型

(10a+b)/(10c+a)=b/c を整理すると 10c(a-b)=b(a-c) となり,b=5 または a-c=5が必要です。これを元の式に代入して計算を続けると,条件をみたす(a,b,c)が存在しないことがいえます。

(右, 左)型

(左, 右)型と同じような議論になりますが,手計算で解ききるのはこのブログの趣旨に反するのであえて Mathematica でやります。

「10の位=10で割った商」「1の位=10で割った余り」はそれぞれ Quotient[n,10], Mod[n,10] で処理できます。