PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 57 / 平方根の近似分数

2の平方根は無限に続く連分数で表すことができる。

√ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + ... ))) = 1.414213...

最初の4回の繰り返しを展開すると以下が得られる。

  • 1 + 1/2 = 3/2 = 1.5
  • 1 + 1/(2 + 1/2) = 7/5 = 1.4
  • 1 + 1/(2 + 1/(2 + 1/2)) = 17/12 = 1.41666...
  • 1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 = 1.41379...

次の3つの項は99/70, 239/169, 577/408である。第8項は1393/985である。これは分子の桁数が分母の桁数を超える最初の例である。

最初の1000項のうち,分子の桁数が分母の桁数を超える項はいくつあるか?

Problem 57 - Project Euler


連分数は ContinuedFraction,それを通分して普通の分数に直すのは FromContinuedFraction。

分母と分子を Denominator,Numerator で取り出して桁数を調べれば解けます。