Project Euler

Problem 21

Problem 21 module Problem_0021 (* 【問題】 d(n)をnの真の約数の和と定義する。 (真の約数とはn以外の約数のことである。) もし、d(a) = b かつ d(b) = a(a ≠ b)を満たすとき、 aとbは友愛数(親和数)であるという。 例えば、220の約数は1,2,4,5,10,1…

Problem 18

Problem 18 module Problem_0018 (* 【問題】 以下の三角形の頂点から下まで移動するとき、 その数値の合計の最大値は23になる。 3 7 4 [10; 7] 2 4 6 [12;14;13] 8 5 9 3 [20;(19);(23);16;] この例では 3 + 7 + 4 + 9 = 23 以下の三角形を頂点から下まで移…

Problem 17

Problem 17 module Problem_0017 (* 【問題】 1 から 5 までの数字を英単語で書けば one, two, three, four, five であり、 全部で 3 + 3 + 5 + 4 + 4 = 19 の文字が使われている。 では 1 から 1000 (one thousand) までの数字をすべて英単語で書けば、 全…

Problem 16

Problem 16 module Problem_0016 (* 【問題】 2^15 = 32768 であり、これの各数字の合計は 3 + 2 + 7 + 6 + 8 = 26 となる。 同様にして、2^1000 の各数字の合計を求めよ。 A. 1366 55 ms *) open System let run() = let ret = 2I<<<999 |> string seq { fo…

Problem 15

Problem 15この問題はリスナー様に解き方(答えを?)教えて頂きました。 教えて頂いき、有り難う御座います!ちなみに、パスカルの三角形の問題だったらしいです。 module Problem_0015 (* 【問題】 2 × 2 のマス目の左上からスタートした場合、引き返しな…

Problem 14

Problem 14 module Problem_0014 (* 【問題】 正の整数に以下の式で繰り返し生成する数列を定義する。 n → n/2 (n が偶数) n → 3n + 1 (n が奇数) 13からはじめるとこの数列は以下のようになる。 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 13から1まで10…

Problem 13

Problem 13 module Problem_0013 (* 【問題】 以下の50桁の数字100個の総和の上位10桁を求めよ。 37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 7432498619952474105947423330951305812372661730…

Problem 12

Problem 12邪道かもしれませんが、問題文には「501個以上の...」と書かれていたので、完全数から導き出しました。 完全数の偶数ならもう少し早いかも良かったかも? module Problem_0012 (* 【問題】 三角数の数列は自然数の和で表わされ、7番目の三角数は 1…

Problem 11

Problem 11 module Problem_0011 (* 【問題】 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 6…

Problem 10

Problem 10 module Problem_0010 (* 【問題】 10以下の素数の和は2 + 3 + 5 + 7 = 17である. 200万以下の全ての素数の和を計算しなさい. A. 142913828922L 694 ms *) // ぱくりコード // http://blogs.msdn.com/b/mpeck/archive/2009/03/03/solving-problems…

Problem 9

Problem 9 module Problem_0009 (* 【問題】 ピタゴラスの三つ組(ピタゴラスの定理を満たす自然数)とはa

Problem 8

Problem 8 module Problem_0008 (* 【問題】 以下の1000桁の数字から5つの連続する数字を取り出して その積を計算する。そのような積の中で最大のものの値はいくらか A. 104743 861 ms *) let ex = let tmp = @"7316717653133062491922511967442657474235534…

Problem 6

Problem 6 module Problem_0006 (* 【問題】 最初の10個の自然数について、その和の二乗と、二乗数の和は以下の通り。 1&#178; + 2&#178; + ... + 10&#178; = 385 (1 + 2 + ... + 10)&#178; = 3025 これらの数の差は 3025 - 385 = 2640 となる。 同様にして…

Problem 5

Problem 5かなり間違いなコード // パターン3 // ユークリッドの互除法 let lcl zero list = let rec _gcd x y = let i = y % x if i = zero then x else _gcd i x let rec _lcl list gcd lcm = match list with | [] -> (gcd, lcm) | hd :: tail -> let x =…

Problem 4

Problem 4 module Problem_0004 (* 【問題】 左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。 では、3桁の数の積で表される回文数のうち 最大のものはいくらになるか。 *) …

Problem 3

Problem 3 module Problem_0003 (* 【問題】 13195 の素因数は 5、7、13、29 である。 600851475143 の素因数のうち最大のものを求めよ。 *) /// 素因数分解関数 let pf num = let rec pfRT list num p = if p <= num then if num % p = 0M then pfRT (p :: …

Problem 2

Problem 2 module Problem_0002 (* 【問題】 フィボナッチ数列の項は前の2つの項の和である。 最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。 「1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...」 数列の項の値が400万を超えない範囲で、偶数値の項の…

Problem 1

Problem 1 module Problem_0001 (* 1,000 未満の 3 or 5 の倍数になっている数字の合計を求めよ。 *) let exp x y = (y % x = 0) let exp2 a = (exp 3 a) || (exp 5 a) let run ()= // 数学的な解(ぱくりコード) let n = 1000 - 1 let a = 3 * (n/3) * (n/…

まずは Program.fs を定義

非同期処理+ポーリングによる60秒制限を盛り込みました。 ポーリングは苦肉の策です。 これ以外に書き方が分からない・・・・ 後エラー処理も取ってしまう羽目に、どうしたものか open System open System.Diagnostics open Common // モジュール名を変え…