Problem 1 - Project Euler 触発されてやってみた

sasa+1 diary Project Euler - Problem 1
に触発されて やってみた

元の問題はこちら
Problem 1 - Project Euler

JavaScript で無理やり書いてみよう!
テーマ:ループなしで計算する


無事にループなしでつくることができたよ!
そのかわり(?)ソースコードがぐちゃぐちゃだw
絶対ダメだしされるw


Problem 1 - Project Euler - jsdo.it - share JavaScript, HTML5 and CSS

上のフォームに好みの数字を入れて計算をクリックすると答えが計算されます

■STOPでソースコードが見れるのでよかったらどうぞ



〜解説という名の言い訳〜

 
※英語力も数学力もあんまりないjasmine88の解説なので期待しないでください



この問題 ざっくり日本語訳すると
10未満の自然数に含まれる3または5の倍数は3,5,6,9です。これらの数の和は23となります。
では1000未満の自然数に含まれる3または5の倍数の和はいくつになるでしょう?
という感じのもの


ひねくれ者のボクはいろいろと考えて
1000を3で割れば3の倍数がいくつ含まれているかわかるよね?
と思いついた

次に 3の倍数の和を求めたい
当然のことながら
1番目は3の1倍、2番目は3の2倍、…n番目は3のn倍 と考えられる

つまり1000に3の倍数がn個含まれているなら
(1からnまでの自然数の和)*3 で1000に含まれる3の倍数の和が出るわけです
これには有名な数式 (n(n*1)/2) が使えます 先人の知恵!

同じ要領で5の倍数の和も出す
よし!これであとはこの二つを足せば完璧だ!

…あれ?
これって3と5の倍数で重複してるのあるよね?
両方足していいのかな?
問題文には"3 or 5"とあるので同じ自然数を2回足すのはルール違反な気がする…

じゃあ公倍数を引こう
重複して2回足されているわけだから1回分引けばいいよね たぶん

同じ要領で3と5の公倍数の和を求める
最小公倍数の15がいくつ含まれているか計算してその和をもとめる

最終的に
1000未満の自然数に含まれる3または5の倍数の和は
3の倍数の和 + 5の倍数の和 - 15の倍数の和
で計算しました

計算に不備はないだろうか…

あとコードの方に不備はないだろうか…
ベストじゃないことは確実だけどw


間違い指摘やつっこみ歓迎します!
むしろお願いします!!←