Project Euler

21問目

を真の約数( の約数のうち より真に小さいもの)の合計と定義する. もし かつ であり の場合, と を友愛数と呼ぶ.例えば, 220 の真の約数は 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 なので . 284 の真の約数は 1, 2, 4, 71, 142 なので .10000 未満の全ての…

19問目

以下のような情報があります. また, 各自で調査しても良いでしょう. 1900年1月1日は月曜日. 小の月は9月, 4月, 6月, 11月. 残りは2月を除いて大の月. 2月は通常は28日だが, 閏年では29日. 閏年は, 4年に1度あり, 100年に1度は閏年でなくなり, さらに400年に1…

17問目

数字の1から5までを単語で書くと one, two, three, four, five となり, 全部で3+3+5+4+4=19文字使っています. では, 1から1000(one thousand)までを単語で書くと何文字使うでしょうか?メモ: ハイフンや空白は数に数えません. 例えば, 342 (three hundred and…

14問目

正の整数の数列が以下の反復規則で定められている. . 上記のルールを使って13から始めると, 次の数列が得られる. . この数列には(13から1まで)10個の数字が含まれている. これはまだ未解決問題(Collatz 問題)なのだが, どの数字から始めても1に辿り着くと考…

63問目

5桁の数 は5乗数でもある. 同様に, 9桁の数 も9乗数である.桁の数でもあり, 乗数でもある正の整数はいくつあるか? http://projecteuler.net/index.php?section=problems&id=63 これは数学で考察を進めるだけで解けました. より, を計算して, 終了.

48問目

である. の下10桁を求めよ. http://projecteuler.net/index.php?section=problems&id=48 実装自体は簡単だと高を括って powMod 関数を作ってみたが, 桁あふれに上手く対処できず, 結局 gmp さんの力を借りることにしました. #include <stdio.h> #include <stdlib.h> #include "p</stdlib.h></stdio.h>…

18問目

下図の三角形に並べられた数字の一番上からスタートして, 1つ下の行の隣接する数字に移動していったとき, 通った数の合計の最大値は23. つまり, . (訳注. 実は, というルートでも良い.)では, 次の三角形に並べられた数字の一番上から一番下までの合計の最大…

12問目

三角数からなる数列は, 自然数を次々と足していくことで得られる. 7番目の三角数は になる. 数列の最初の10項は, となる.三角数の最初の7項について約数を列挙すると, となる. これから, 28 が約数の数が5を越える最小の三角数だと分かる.では, 約数の数が 5…

問題34

145 は興味深い数字である. なぜなら, となるからである. 各桁の数字の階乗の合計が自身と等しくなる数の合計を求めよ. ただし, と は含まない. http://projecteuler.net/index.php?section=problems&id=34 「問題30と同じじゃん. プログラムがそのまま使え…

問題30

驚くべきことに, 各桁の数字を4乗して合計すると元の数字になる数字は次の3つだけである. ただし, は含まない. それらの数の合計は, .では, 各桁の数字を5乗して合計すると元の数字になる数字の合計を求めよ. http://projecteuler.net/index.php?section=pro…

25問目

Fibonacci 数列は再帰的な関係式によって定義されている. . 従って, 最初の12個は, となる. 12番目の が初めて3桁になる数字である.では, 初めて1000桁になるのは何番目か? http://projecteuler.net/index.php?section=problems&id=25 以前の問題 (問題2改 -…

24問目

順列は順序が付いた物の並べ替えのことである. 例えば, 3124 というのは 1, 2, 3, 4 という数字の順列の一つである. 全ての順列が数字順もしくはアルファベット順に並んでいるとき, それを「辞書順(lexicographic order)」と呼ぶ. 0, 1, 2 の順列を辞書順に…

20問目

は という意味である. の各桁の数字の合計を求めよ. http://projecteuler.net/index.php?section=problems&id=20 えぇ, またですか, そうですか. そんなに C をいじめたいですか?? 「助けて〜, pari えも〜ん. Project Euler がイジめるよ〜. 」と再び pari/…

16問目

であり, その各桁の数字の合計は . では, の各桁の数字の合計は? http://projecteuler.net/index.php?section=problems&id=16 エグい, エグすぎる!! またしても, C の苦手な ULLONG_MAX を越えた数の操作ですか!? しかも, 今回はどう考えても数学を使った回…

15問目

2×2のマス目の左上の角からスタートして, (後戻りせずに)右下の角まで行く方法は6通りある. では, 20×20のマス目では何通りあるか? http://projecteuler.net/index.php?section=problems&id=15 ( ゚д゚) (つд⊂)ゴシゴシ (;゚д゚) (つд⊂)ゴシゴシ _, ._ (;゚ Д゚)こ…

13問目

次の100個の50桁の数字の合計の, 上位10桁を求めよ. http://projecteuler.net/index.php?section=problems&id=13 これは面倒でした. 正しく計算するには任意精度の整数型が必要ですが, C にはそんなものはありません. 自作するにも大変だし, しょうがないの…

11問目

以下の20×20の数字の並びの中で, 対角線方向に4つの数字に赤く印が付けてあります. (図省略) それらの積は 26 × 63 × 78 × 14 = 1788696です. 20×20の数字の並びの中で, 任意の方向(上下左右もしくは斜め)の隣接する4つの数字の積の最大値はいくつか? http:/…

8問目

次の1000桁の数字の中で, 連続する5つの数字の積の最大値を求めよ. (図省略) http://projecteuler.net/index.php?section=problems&id=8 う〜ん, 結局力技(brute-force)になると思い, 一応計算量を減らす工夫をした解も書いてみました. 例によって, 力技でも…

52問目

125874 とその2倍 251748 は, 同じ数字を異なる順序で含む. x, 2x, 3x, 4x, 5x, 6x が同じ数字を含むような, 最小の正整数 x を求めよ. http://projecteuler.net/index.php?section=problems&id=52 正直これは答えを知ってしまっていたので, 簡単に終った.理…

28問目

1から始めて, 時計回りに5×5サイズの渦を作ると以下のようになります. 21 22 23 24 25 20 7 8 9 10 19 6 1 2 11 18 5 4 3 12 17 16 15 14 132つの対角線上にある数字の合計は101と分かります. 同様にして1001×1001サイズの渦の両対角線上の数字の合計はいく…

10問目

10より小さい("below" って「以下」「未満」どっち?)素数の合計は, 2 + 3 + 5 + 7 = 17. 2000000 より小さい全ての素数の合計を求めよ. http://projecteuler.net/index.php?section=problems&id=10 素数を正確に列挙する手段ってエレガントな方法は無く, た…

7問目

最初の6つの素数を並べると, 2, 3, 5, 7, 11, 13 となり, 6番目の素数は13だということが分かる. では, 10001番目の素数は何か? http://projecteuler.net/index.php?section=problems&id=7 prime 関数を使う場合は最初に上限を決めなければいけないのですが,…

6問目, 9問目

今回は数学と電卓だけで解けてしまったので, プログラミングはしてません. 6問目 自然数の1から10までの平方の和は, 自然数の1から10までの和の平方は, 従って, 1から10までの平方の和と和の平方との差は です. 1から100までの平方の和と和の平方との差はい…

4問目

回文数はどちらから読んでも同じ数字になる. 2つの2桁の数の積となる最大の回文数は 9009 = 91 × 99 だ. では, 2つの3桁の数の積となる最大の回文数を求めよ. http://projecteuler.net/index.php?section=problems&id=4 今回のは回文数が題材で, その生成や…

5問目

2520 は 1 から 10 までのそれぞれの数で割り切れる最小の数です. では, 1 から 20 までの全ての数で割り切れる最小の数は何? http://projecteuler.net/index.php?section=problems&id=5 数学的にも簡単だし, アルゴリズム的にもすっきり書けるのであまり悩…

3問目

13195 の素因数は 5 と 7 と 13 と 29. では, 600851475143 の素因数の中で最大のものは? http://projecteuler.net/index.php?section=problems&id=3 この問題の肝は「素数生成」なので prime という関数を用意し, prime(0) と呼び出すことで素数を次々と返…

問題2改

ぎゃー、毎日更新するとか云っておきながら、さっそく三日坊主……。 いや、風邪が……。体調が………。 はい、すみません、四の五の云わずに問題2です。前回: http://d.hatena.ne.jp/cocoatomo/20090419/1240148001 数学的考察 数列 の一般項は . (式が煩雑になる…

問題2

Fibonacci 数列は2項の和を次の新しい項とすることで作られる. 1と2で始めた場合最初の10項は次の通りになる. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,... この数列の4000000を越えない偶数の項の合計を求めよ. http://projecteuler.net/index.php?section=probl…

問題1

http://d.hatena.ne.jp/cocoatomo/20090329/1238295371 の続きです。ちょこっとだけ改良を加えました。 #include <stdio.h> #include <stdlib.h> int solveVer00(int, int, int); int solveVer01(int, int, int); int sumOfMultiples(int, int); /** * 0 以上 ceiling 未満の nu</stdlib.h></stdio.h>…

問題1

問題文 10未満の自然数のうち3または5の倍数を並べると, 「3, 5, 6, 9」となる. そして, それらの合計は23.では, 1000未満の全ての3または5の倍数の合計は? http://projecteuler.net/index.php?section=problems&id=1 まずは, 安直に解く. 今後, 解法のバー…