2010-01-01から1ヶ月間の記事一覧

Project Euler 47(2)

逆に考えて4つの素数からなる数を生成できないでしょうか。 素数またはそのべきの4つの積を生成すればよいですが、順番に生成することはできないので、ある程度範囲を区切って出てきた数をソートして出力します。 ふるい的な方法より少し速くなりました。

Project Euler 47(1)

Problem 47 2つの素数からなる最初の2つの連続した数は、 14 = 2 × 7 15 = 3 × 5 3つの素数からなる最初の3つの連続した数は、 644 = 22 × 7 × 23 645 = 3 × 5 × 43 646 = 2 × 17 × 19 4つの素数からなる最初の4つの連続した数を見つけよ。それらの数の最初…

Project Euler 273

プロジェクトオイラー http://projecteuler.net/index.php?section=problems&id=273なかなか解けないもんだから日付をまたいでしまった。 数学的な部分は、最初考えていて、分からないからお風呂に入りながらゆっくり考えようと思ったら、湯船に入った瞬間に…

Project Euler 4

http://projecteuler.net/index.php?section=problems&id=4 回文数の判定は、各桁に分解してリストをひっくり返して数に戻して元通りになっているかどうかを調べる。各桁に分解するのは再帰で。 リストを数に戻すには次のようにする。 numerize a = foldr (\…

Project Euler 45(2)

Pm = Hn を式変形すると、 m(3m - 1) = 2n(2n - 1) (36m2 - 12m) / 12 = (16n2 - 8n) / 4 ( (6m - 1)2 - 1) / 12 = ( (4n - 1)2 - 1) / 4 (6m - 1)2 - 3(4n - 1)2 = -2 結局、次の方程式に帰着されました。 x2 - 3y2 = -2 これはペル方程式に似ています。 (x…

Project Euler 45(1)

Problem 45 三角数、五角数、六角数は次の公式で生成される。 Tn = n(n+1)/2 1, 3, 6, 10, 15, ... Pn = n(3n-1)/2 1, 5, 12, 22, 35, ... Hn = n(2n-1) 1, 6, 15, 28, 45, ... T285 = P165 = H143 = 40755 であることが確かめられる。 この次の五角数でも六…

Project Euler 3

http://projecteuler.net/index.php?section=problems&id=3 素因数分解するので、まず素数列を出さなければならない、ということはもちろんなくて、ここでは2, 3, 5, 7, 9, …と割っていくことにする。 prime_candidates = 2:[ 3, 5.. ]これで、所望の無限リ…

Project Euler 44(2)

少し数学的にアプローチしましょう。 求めるDを、 D = Pl = Pk - Pj とすると、 l(3l - 1) = k(3k - 1) - j(3j - 1) l(3l - 1) = (k - j)(3k + 3j - 1) k - j と 3k + 3j - 1 は l(3l - 1) の約数になります。ただし、制約がいろいろあります。3の因子はすべ…

Project Euler 272

プロジェクトオイラー http://projecteuler.net/index.php?section=problems&id=272 C(n)の求め方を勘違いしていて、間違いに気がついたのが昨日の夜で、これで簡単になるじゃんと思ってコードを書いたんだが、最初個数だと思ってしまって、書き直して和にし…

Project Euler 271

プロジェクトオイラー http://projecteuler.net/index.php?section=problems&id=271 出遅れたし、272のほうが簡単そうに見えたので最初そちらを考えたら数時間かかるコードになってしまった。271はよく考えたらなんでもない問題だった。

Project Euler 44(1)

Problem 44 五角数は次の公式で生成される:Pn = n(3n - 1) / 2。 (中略)五角数のペアPj, Pkで、その差と和も五角数となり、D = |Pk - Pj|が最小となるものを見つけよ。そのDの値は? http://projecteuler.net/index.php?section=problems&id=44 まともに…