読者です 読者をやめる 読者になる 読者になる

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 243 / 弾性

分子が分母より小さい正の分数を真分数と呼ぶ。任意の分母 d に対して真分数は d-1 個ある。たとえば, d = 12 では次のようになる。1/12, 2/12, 3/12, 4/12, 5/12, 6/12, 7/12, 8/12, 9/12, 10/12, 11/12約分できない分数を弾性分数(resilient fraction)と呼…

Project Euler 204 / 一般化ハミング数

ハミング数とはどの素因数も5以下であるような正整数のことである。小さい方から順に並べると次のようになる。 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 1510^8以下のハミング数は1105個ある。素因数が n 以下の正整数を type n の一般化ハミング数と呼ぶことにする…

Project Euler 235 / 等差等比数列

等差数列と等比数列を用いた次の数列を考える。 u(k) = (900-3k)r^(k-1)s(n) = Σ[k=1...n]u(k) とする。s(5000) = -600,000,000,000 をみたす r を求めよ。小数点以下12桁に四捨五入して解答を入力せよ。Problem 235 - Project Euler これは易しい。等差と等…

Project Euler 205 / サイコロゲーム

ピーターは4面のサイコロを9つ持っている。サイコロの各面には1, 2, 3, 4と書いてある。コリンは6面のサイコロを6つ持っている。サイコロの各面には1, 2, 3, 4, 5, 6と書いてある。ピーターとコリンはサイコロを投じ,出た目の合計を比べる。合計が多い方が…

Project Euler 267 / 億万長者

あなたに変わった投資の機会が与えられる。£1 の資産からはじめて固定した比率 f を選び, 資産の中でその比率を公正なコイントスに賭け, 1000 回繰り返す。賭け金は表のときは倍戻り,裏の時は失う。例えば f=1/4 のとき,最初のトスでは £0.25 賭け,表が出…

Project Euler 277 / 修正コラッツ列

整数の修正コラッツ列は値 a1 から始めて次のようにして得られる。an が 3 で割り切れるならば a(n+1) = an/3 これを大きな下ステップ "D" と表す。an を 3 で割った余りが 1 ならば a(n+1) = (4an + 2)/3 これを大きな上ステップ "U" と表す。an を 3 で割…

Project Euler 265 / 2進円

2^N の2進数の数字は時計回りに N 桁連続する数字すべてで網羅するように円状に並べることができる。例えば N=3 では回転を無視すると2つの円状の配置が可能である。最初の配置では時計回りの3桁の数列は 000, 001, 010, 101, 011, 111, 110, 100 である。そ…

Project Euler 250 / 250250

要素の合計が250で割り切れるような {1^1, 2^2, 3^3,..., 250250^250250} の空でない部分集合の数を求めよ。最下位の16桁を答えとして入力せよ。Problem 250 - Project Euler 部分集合の個数は 2^250250 個。とても全部は調べられないので,漸化式を使って解…

Project Euler 225 / トリボナッチを割り切らない数

数列 1, 1, 1, 3, 5, 9, 17, 31, 57, 105, 193, 355, 653, 1201 ...は T1=T2=T3=1 および Tn=T(n-1)+T(n-2)+T(n-3) によって定義される。27はこの数列の任意の項を割り切らないことが証明できる。27はこの性質を持つ最初の奇数である。この数列の任意の項を…

Project Euler 291 / Panaitopol素数

素数 p がある正の整数 x, y に対してをみたすとき,p を Panaitopol 素数 と呼ぶ。 5x10^15 未満の Panaitopol 素数はいくつあるか。Problem 291 - Project Euler 問題131とほとんど同じ方法で解けてしまった。x と y の最大公約数を g として x=gX, y=gY(…

Project Euler 216 / 2n^2-1 の形の素数

式 t(n) = 2n^2-1 (n>1)で表される数 t(n) について考える。最初の数個を挙げると 7,17,31,49,71,97,127,161 となる。 この中では 49 = 7*7 と 161 = 7*23 だけが素数でない。n ≤ 10000 では 2202 個の t(n) が素数である。n ≤ 50,000,000 で素数である t(n)…

Project Euler 239 / 場違いな素数たち

それぞれ 1 から 100 まで番号の書かれたディスクが一列に無作為に並んでいる。ちょうど 22 個の素数の番号のディスクが番号順の位置と異なる場所にある確率を求めよ。素数でない番号のディスクはどれも番号順の位置にあってもなくてもよい。解答は小数点以…

Project Euler 211 / 約数の2乗の和

正の整数 n に対して σ2(n) を約数の2乗の和とする。たとえばσ2(10) = 1+4+25+100 = 1300 Problem 211 - Project Euler 約数の2乗の和は DivisorSigma[2,n] で簡単に求められますが,平方数の判定で苦労しました。Mathematica には isSquareQ みたいな関数が…

Project Euler 286 / 得点確率

Barbara は数学者でありバスケットボール選手である。彼女は距離 x からシュートしたときに得点できる確率がちょうど (1-x/q) であることに気づいた。ここで q は 50 よりも大きな実定数である。各予行練習では,彼女は 距離 x=1, x=2, ..., x=50 からシュー…

Project Euler 231 / 二項係数の素因数分解

二項係数 C[10, 3] = 120 は 120 = 2^3 ×3×5 = 2×2×2×3×5 2+2+2+3+5 = 14 をみたす。C[10, 3] を素因数分解した項の和は 14 となる。C[20000000, 15000000] を素因数分解した項の和を求めよ。Problem 231 - Project Euler ダメ元で素因数分解させてみたらや…

Project Euler 206 / 覆面平方数

平方すると 1_2_3_4_5_6_7_8_9_0("_"は1桁の数) の形の数になる自然数がただ一つある。その値を求めよ。Problem 206 - Project Euler 第1案 もとの数を n とします。n^2 の一の位が0なので,n は10の倍数です。また,n^2 の百の位が9であることから,n の…