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

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 36 / 2種類の基数による回文数

585 = 10010010012(2) は10進法でも2進法でも回文数である。100万未満で10進でも2進でも回文数になるような数の総和を求めよ。注:先頭に0を補って回文にすることは許されない。Problem 36 - Project Euler 回文数を判定する関数 PalindromeQ が用意されてい…

Project Euler 21 / 友愛数

d(n) を n の真の約数の和と定義する。真の約数とは n 自身以外の約数のことである。d(a) = b かつ d(b) = a(a ≠ b)が成立するとき,「a と b は友愛数である」という。たとえば 220の約数は 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 なので d(220) = 284…

Project Euler 22 / 名前のスコア

5000個以上の名前が書かれている46Kのテキストファイル filenames.txt を用いる。まずアルファベット順にソートせよ。その後,各名前についてアルファベットに値を割り振り,リスト中の出現順の数と掛けあわせることで名前のスコアを計算する。たとえば,ソ…

Project Euler 89 / ローマ数字

ローマ数字の記法は一つの数について沢山ある場合が存在する。しかし,ある数については最良の記法が必ず存在する。例として16は次のように表せる。IIIIIIIIIIIIIIII VIIIIIIIIIII VVIIIIII XIIIIII VVVI XVI最後の例は最小の文字数で表せるという意味で最も…

Project Euler 9 / 特別なピタゴラス数

ピタゴラス数とは a a + b + c = 1000 となるピタゴラスの三つ組が一つだけ存在する。これらの積 abc を計算しなさい。Problem 9 - Project Euler Mathematica は解の範囲として Integers を指定するだけで方程式の整数解を求められます。 今回,実は解の a,…

Project Euler 45 / 三角数,五角数,六角数

三角数,五角数,六角数は次のような数である。三角数Tn=n(n+1)/21, 3, 6, 10, 15, ...五角数Pn=n(3n-1)/21, 5, 12, 22, 35, ...六角数Hn=n(2n-1)1, 6, 15, 28, 45, ...T285 = P165 = H143 = 40755である。次の三角数かつ五角数かつ六角数な数を求めよ。Prob…

Project Euler 30 / 各桁の5乗

各桁を4乗した数の和が元の数と一致する数は3つしかない。1634 = 1^4 + 6^4 + 3^4 + 4^48208 = 8^4 + 2^4 + 0^4 + 8^49474 = 9^4 + 4^4 + 7^4 + 4^4ただし,1=1^4 は含まないものとする。これらの数の和は 1634 + 8208 + 9474 = 19316 である。各桁を5乗した…

Project Euler 34 / 桁の階乗

145は面白い数である。1! + 4! + 5! = 1 + 24 + 120 = 145 となる。各桁の数の階乗の和が自分自身と一致するような数の和を求めよ。(注)1! = 1 と 2! = 2 は総和に含めてはならない。Problem 34 - Project Euler どこまで調べればいいか どこかの国の数学…

Project Euler 28 / 対角線上の数の和

1からはじめて右方向に進んで時計まわりに数を増やしていくと,5×5 のらせんができる。21222324252078910196121118543121716151413両対角線上の数字の合計は101である。1001×1001のらせんを同じ方法で作ると,両対角線上の数字の和はいくつになるか?Problem…

Project Euler 48 / 自身のべき乗

1^1 + 2^2 + 3^3 + ... + 1000^(1000) の最後の10桁を求めよ。Problem 48 - Project Euler 単純に足して Mod をとりました。計算時間 0.002 秒とは……

Project Euler 40 / チャンパーノウン定数

正の整数を順に連結して得られる以下の10進の無理数を考える。0.123456789101112131415161718192021...小数第12位は1である。dnで小数第n位の数を表す。 d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000 を求めよ。Problem 40 - Project Euler 小数…

Project Euler 29 / a^bの個数

2 ≦ a ≦ 5 と 2 ≦ b ≦ 5について a^b をすべて考えてみよう。22=4, 23=8, 24=16, 25=32 32=9, 33=27, 34=81, 35=243 42=16, 43=64, 44=256, 45=1024 52=25, 53=125, 54=625, 55=3125これらを小さい順に並べて同じ数を除くと15個の項を得る。4, 8, 9, 16, 25,…

Project Euler 25 / 1000桁のフィボナッチ数

フィボナッチ数列の最初の12項は以下である。1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 14412番目の項F12が3桁になる最初の項である。1000桁になる最初の項の番号を答えよ。Problem 25 - Project Euler 桁数の判定はどうやるのが正解なんだろうか。10^(999) を…

Project Euler 12 / 三角数の約数の個数

三角数の数列は自然数の和で表わされ,7番目の三角数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 である。三角数の最初の10項は 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... となる。最初の7項の約数を列挙すると次のようになる。 1: 1 3: 1,3 6: 1,2,3,6 10: 1,2,5,1…

Project Euler 8 / 数字列中の最大の積

次の1000桁の数字のうち,隣接する4つの数字の総乗の中で最大となる値は 9 × 9 × 8 × 9 = 5832 である。 73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 858615607891129494954595017379583319528…

Project Euler 19 / 日曜はじまりの月

次の情報が与えられている。 1900年1月1日は月曜日である 9月, 4月, 6月, 11月は30日まであり,2月を除く他の月は31日まである 2月は28日まであるが,うるう年のときは29日である うるう年は西暦が4で割りきれる年に起こる。しかし,西暦が400で割りきれず10…

Project Euler 4 / 最大の回文積

左右どちらから読んでも同じ値になる数を回文数という。2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である。3桁の数の積で表される回文数の最大値を求めよ。Problem 4 - Project Euler 回分数の判定は IntegerDigits と Reverse でで…

Project Euler 2 / 偶数のフィボナッチ数

フィボナッチ数列の項は前の2つの項の和である。最初の2項を1, 2とすれば,最初の10項は以下の通りである。1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...400万以下の偶数値をとる項の総和を求めよ。Problem 2 - Project Euler 「400万以下」の条件でループをまわ…

Project Euler 6 / 二乗の和と和の二乗

最初の100個の自然数について二乗の和と和の二乗の差を求めよ。Problem 6 - Project Euler これはシグマの公式を使うのが自然でしょう。 ついでに展開して二重和を計算してみました。 Sum をネストしなくていいことをはじめて知りました。 ためしにやってみ…

Project Euler 1 / 3か5の倍数の総和

10未満の自然数のうち3か5の倍数は3, 5, 6, 9の4つがあり,これらの和は23である。1000未満の自然数で3か5の倍数になっているものの和を求めよ。Problem 1 - Project Euler Problem 10で使った Boole でいけます。 variee.hatenadiary.com 追記 「3か5の倍数…

Project Euler 24 / 辞書式順列

順列とはモノの順番つきの並びのことである。たとえば3124は数1, 2, 3, 4の順列である。0と1と2の順列を辞書順に並べると012, 021, 102, 120, 201, 210になる。0, 1, 2, 3, 4, 5, 6, 7, 8, 9からなる順列を辞書式に並べたときの100万番目はいくつか?Problem …

Project Euler 13 / 大きな数の首位10桁

以下の50桁の数字100個の合計の上から10桁を求めなさい。3710728753390210279879799822083759024651013574025046376937677490009712648124896970078050417018260538(中略)53503534226472524250874054075591789781264330331690Problem 13 - Project Euler …

Project Euler 10 / 200万以下の素数の和

200万以下のすべての素数の和を求めよ。Problem 10 - Project Euler VBA の COUNTIF 関数的なものを作ってみました。PrimeQ[x] は x が素数なら True,素数でないなら False を返します。これを使って,素数は1倍,素数以外は0倍して足します。最初に作った…

Project Euler 20 / 100!の各位の数字の和

100! の各位の数字の和を求めよ。Problem 20 - Project Euler 1つ前に書いたproblem 16とほぼ同じ。リストを作って総和を求めるだけ。

Project Euler 16 / 2^(1000) の各位の数字の和

2^(1000) の各位の数字の和を求めよ。Problem 16 - Project Euler IntegerDigitsで各位の数字を並べたリストを作って,総和を求めれば終わり。

Project Euler 3 / 最大の素因数

13195の素因数は5, 7, 13, 29である。600851475143の素因数のうち最大のものを求めよ。Problem 3 - Project Euler 単に解くだけなら FactorInteger で因数分解すれば終わりです。最大の素因数は 6857。 次は最大の判定まで mathematica にやってもらいます。…

Project Euler 15 / 格子の最短経路

2×2のマス目の左上からスタートした場合,引き返しなしで右下にいくルートは6つある。では,20×20のマス目ではいくつのルートがあるか。Problem 15 - Project Euler 二項係数を使うだけ。要するに C[40, 20] ですね。

Project Euler 7 / 10001番目の素数

素数を小さい方から6つ並べると2, 3, 5, 7, 11, 13であり,6番目の素数は13である。10001番目の素数を求めよ。Problem 7 - Project Euler これは簡単。Prime[n] で n 番目の素数を取り出せます。

Project Euler 5 / 最小公倍数

2520は1から10までのすべての整数で割りきれる最小の自然数である。1から20までのすべての整数で割りきれる最小の自然数を求めよ。Problem 5 - Project Euler 答えは1から20までの数の最小公倍数です。手計算で解く場合,1から20までの数を素因数分解して求…