ProjectEulerとは
プログラムで解く数学の問題集です。1
せっかくなのでJavascript1行で解いてみる
Q1
10未満の自然数のうち, 3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり, これらの合計は 23 になる.
同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ.2
Q1
10未満の自然数のうち, 3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり, これらの合計は 23 になる.
同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ.2
[...Array(1000)]
.map((v,i) => i)
.filter((v) => !(v%3) || !(v%5))
.reduce((s, v) => s + v , 0)
Q2
フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万以下の, 偶数値の項の総和を求めよ.3
Q2
フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万以下の, 偶数値の項の総和を求めよ.3
(
(f = (a) => !a ?
f([ 1, 2 ]) :
a[a.length-2] + a[a.length-1] > 4000000 ?
a :
f([...a, a[a.length-2] + a[a.length-1]])
) => f()
.filter((v) => !(v%2))
.reduce((s, v) => s +v , 0)
).call()
Q4
左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である.
では, 3桁の数の積で表される回文数の最大値を求めよ.4
Q4
左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である.
では, 3桁の数の積で表される回文数の最大値を求めよ.4
[...Array(1000)]
.map((v,i) => i)
.filter((v) => v > 99)
.map((v,i,a) =>
a
.map((b) => b * v)
.filter((v) => `${v}` === `${v}`.split("").reverse().join(""))
)
.reduce((p,a) => [...p, ...a], [])
.sort((a,b) => a - b)
.pop();
参考資料
- Project Euler - PukiWiki
http://odz.sakura.ne.jp/projecteuler/index.php?Project%20Euler
- About - Project Euler
https://projecteuler.net/
-
http://odz.sakura.ne.jp/projecteuler/index.php?Project%20Euler#daab6db0 ↩
-
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%201 ↩ ↩2
-
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%202 ↩ ↩2
-
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%204 ↩ ↩2