飽きっぽい人間なので常に新しい教材を求めます.
ProjectEulerってのを始めました.
プログラミングのオンラインジャッジとかは色々あるけれど、
こちらはただ一つの具体的な問題について回答を送ればいいだけ.
つまり解く手順やプログラムのソースコードを送信する必要もない.
なんだか気楽そうなのでやってた.
自己申告制で用いる言語を自己紹介に添える.
自分はC#の練習のつもりでこれを始めたけれど、気附いたらJavaScriptで
書いていていかんいかんと思いF#を書いた.
http://projecteuler.net/problem=12
私の答えです.
open System
let main =
// nの約数の数
let rec num_of_factor n =
let rec num_of_factor' a ac =
if n % a = 0 then
let x = a
let y = n/a
if x = y then
ac + 1
elif x > y then
ac
else
num_of_factor' (a+1) (ac+2)
else
num_of_factor' (a+1) ac
num_of_factor' 1 0
// n = 1, 3, 6, ..を順にチェック
let countup N =
let rec countup' n ac =
let num_of_factor_of_n = num_of_factor ac in
if num_of_factor_of_n > N then
printfn "num_of_factor of %d is %d." ac num_of_factor_of_n
else
countup' (n+1) (ac+n)
countup' 0 0
Console.ReadLine()
|> Int32.Parse
|> countup
プログラムへの標準入力として整数Nを受け取って、
1, 3, 6, 9, 15, ..
という数列の前からそれぞれ約数の数を調べてNを超えたら終了する
ループを回す.
って、見たままのコードになるのがいい
コメ(0) | トラ(0)