Project Euler

SQLでProject Euler − Problem 04

PostgreSQL なら文字列をテーブルに変換出来るからもっとスマートになりそう。 SQL Server だと桁数を知ってる上での書き方になります。 他に良い方法あるかな? /** 【問題】 左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される…

SQLでProject Euler − Problem 03

SQL Server では暗黙的なデータ変換の悪影響で下記SQLでは問題が解けません。 勝手なデータ型変換をやめさせる事が出来れば下記SQLでデータ型を全部 decimal(12,0) とかにすれば解けるかと思われます。 SQL Serverもまだまだだ。 個人的にはPostgreSQL最強と…

SQLでProject Euler − Problem 06

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

SQLでProject Euler − Problem 02

PostgreSQLのgenerate_table?が欲しいなーと思っていましたが、再帰SQLがあれば問題ないかも! ただネスト数が多すぎるとどうなるかがまだ見えません。■ 新バージョン /** 【問題】 フィボナッチ数列の項は前の2つの項の和である。 最初の2項を 1, 2 とすれ…

SQLでProject Euler − Problem 01

再帰SQLを使ってみました。 シーケンスチックな感じで使えてとても良い感じです。 しかも分かりやすい!■ 新バージョン /** 1,000 未満の 3 or 5 の倍数になっている数字の合計を求めよ。 **/ WITH Temp (n) AS ( (SELECT 1) UNION ALL SELECT n+1 FROM Temp…

Problem 50

Problem 50数日速度で悩んだ問題。 下記のコードでは何と1秒も掛かってない速い速度で終わった。 集めた素数の数自体がそもそも少ないので、早いのは当然かもしれません。 module Problem_0050 (* 素数41は6つの連続する素数の和として表せる: 41 = 2 + 3 + …

Project Euler リンク集

Project Euler の回答記事リンク集■F# まずは Program.fs を定義 Problem 001 Problem 002 Problem 003 Problem 004 Problem 005 Problem 006 Problem 007 Problem 008 Problem 009 Problem 010 Problem 011 Problem 012 Problem 013 Problem 014 Problem 01…

Problem 40

Problem 40 module Problem_0040 (* 正の整数を順に連結して得られる以下の10進の無理数を考える: 0.123456789101112131415161718192021... 小数第12位は1である. dnで小数第n位の数を表す. d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000 を求めよ…

Problem 39

Problem 39 module Problem_0039 (* 辺の長さが{a,b,c}と整数の3つ組である 直角三角形を考え,その周囲の長さをpとする. p = 120のときには3つの解が存在する {20,48,52}, {24,45,51}, {30,40,50} p ≦ 1000 で解の数が最大になる p を求めよ. *) //(840, 8) …

Problem 38

Problem 38 module Problem_0038 (* 192を1, 2, 3で掛けてみよう. 192 × 1 = 192 192 × 2 = 384 192 × 3 = 576 積を連結することで1から9のPandigital数 192384576 が得られる. 192384576を192と(1,2,3)の連結積と呼ぶ. 同じようにして,9を1,2,3,4,5と掛け連…

Problem 37

Problem 37748317 module Problem_0037 (* 3797は面白い性質を持っている. まずそれ自身が素数であり,左から右に桁を除いたときに全て素数になっている (3797, 797, 97, 7). 同様に右から左に桁を除いたときも全て素数である (3797, 379, 37, 3). 右から切り…

Problem 36

Problem 36 (* 585 = 10010010012 (2進) は10進でも2進でも回文数である. 100万未満で10進でも2進でも回文数になるような数の総和を求めよ. (注: 先頭に0を含めて回文にすることは許されない.) *) (* 872187 -- 0 1 3 5 7 9 33 99 313 585 717 7447 9009 153…

Problem 35

Problem 35 module Problem_0035 (* 197は巡回素数と呼ばれる. 桁を回転させたときに得られる数 197, 971, 719 が全て素数だからである. 100未満には巡回素数が13個ある: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, および97である. 100万未満の巡回素数…

Problem 34

Problem 34 module Problem_0034 (* 145は面白い数である. 1! + 4! + 5! = 1 + 24 + 120 = 145となる. 各桁の数の階乗の和が自分自身と一致するような数の総和を求めよ. 注: 1! = 1 と 2! = 2 は総和に含めてはならない. *) (* 40730 4443 ms *) let calc() …

Problem 33

Problem 33 分数として扱わなくても計算できるだろうという観点で考えます。以下がこれまで考えた結果のまとめみたいなもの、4通りに絞れるはずが、3通りしかでなかったので、どこかに見落としが含まれているはず。。======================================…

Problem 32

Problem 32 module Problem_0032 (* 7254は面白い性質を持っている. 39 × 186 = 7254と書け, 掛けられる数/掛ける数/積に1から9の数が1回ずつ出現する. 掛けられる数/掛ける数/積に1から9の数が1回ずつ出現するような 積の総和を求めよ. HINT: いくつかの積…

Problem 31

Problem 31 module Problem_0031 (* イギリスでは硬貨はポンド£とペンスpがあり, 一般的に流通している硬貨は以下の8種類である. 1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p). 以下の方法で£2を作ることが可能である. 1×£1 + 1×50p + 2×20p + 1×5…

Problem 30

Problem 30 module Problem_0030 (* 驚くべきことに, 各桁を4乗した和が元の数と一致する数は3つしかない. 1634 = 14 + 64 + 34 + 44 8208 = 84 + 24 + 04 + 84 9474 = 94 + 44 + 74 + 44 ただし, 1=14は含まないものとする. この数たちの和は 1634 + 8208 +…

Problem 29

Problem 29 module Problem_0029 (* 2 ≤ a ≤ 5 と 2 ≤ b ≤ 5について, abを全て考えてみよう: 22=4, 23=8, 24=16, 25=32 32=9, 33=27, 34=81, 35=243 42=16, 43=64, 44=256, 45=1024 52=25, 53=125, 54=625, 55=3125 これらを小さい…

Problem 28

Problem 28数式の書き方としてあってるかどうか分かりませんが・・・・ 解き方としてはこんな感じかな?? 範囲は1001x1001なので ではなくとなるみたい。 つまり 右上の数字は奇数値に対して+2ずつした数の二乗した数になるので、それを逆算をして2で割るこ…

Problem 27 の考察のまとめ

■問題文に出てくる式 式A: 式B: 式D:考察1で定理と証明で求められた式 式C:■条件 ■,の求め方 式Cを展開した場合、以下のようになる。 上記式より、,の求め方は以下の通りとなる。 ■,の最大値と最小値 最小値と最大値は式Aと式Bの間と考えられる為、以下…

Problem 27 の考察1

※はてなは結構バグるので文字が切れたり、タイトルにひっついたりします。問題文の式 の範囲はとなる。 この式を式Aと定義する。の範囲はであることが分かっている。 この式を式Bと定義する。ここで推測だが、式Aのの範囲はではないかと考える。 n 結果 素数…

Problem 27

Problem 27■ 総当たりの場合 module Problem_0027 (* オイラーは以下の二次式を考案している: n2 + n + 41. この式は, nを0から39までの連続する整数としたときに40個の素数を生成する. しかし, n = 40のとき402 + 40 + 41 = 40(40 + 1) + 41となり41で割り…

Problem 26

Problem 26 module Problem_0026 (* 単位分数とは分子が1の分数である。 分母が2から10の単位分数を10進数で表記すると次のようになる。 1/2 = 0.5 1/3 = 0.(3) 1/4 = 0.25 1/5 = 0.2 1/6 = 0.1(6) 1/7 = 0.(142857) 1/8 = 0.125 1/9 = 0.(1) 1/10 = 0.1 0.1…

Problem 24

Problem 24■書き直したコード module Problem_0024 (* 【問題】 順列とはモノの順番付きの並びのことである. たとえば, 3124は数1, 2, 3, 4の一つの順列である. すべての順列を数の大小でまたは辞書式に並べたものを辞書順と呼ぶ. 0と1と2の順列を辞書順に並…

Problem 25

Problem 25 module Problem_0025 (* フィボナッチ数列は以下の漸化式で定義される: Fn = Fn-1 + Fn-2, ただし F1 = 1, F2 = 1. 最初の12項は以下である. F1 = 1 F2 = 1 F3 = 2 F4 = 3 F5 = 5 F6 = 8 F7 = 13 F8 = 21 F9 = 34 F10 = 55 F11 = 89 F12 = 144 12…

Problem 23

Problem 23 module Problem_0023 (* 完全数とは, その数の真の約数の和がそれ自身と一致する数のことである. たとえば, 28の真の約数の和は, 1 + 2 + 4 + 7 + 14 = 28であるので, 28は完全数である. 真の約数の和がその数よりも少ないものを不足数といい, 真…

Problem 22

Problem 22 module Problem_0022 (* 【問題】 5000個以上の名前が書かれている46Kのテキストファイルnames.txtを 用いる. まずアルファベット順にソートせよ. のち,各名前についてアルファベットに値を割り振り, リスト中の出現順の数と掛け合わせることで,…

Problem 20

Problem 20 module Problem_0020 (* 【問題】 n × (n - 1) × ... × 3 × 2 × 1 を n! と表す。 100! の各桁の数字の合計を求めよ。 *) // 通常パターン // 648 // 59 ms let calc = let fac n = seq { 2I..n } |> Seq.reduce (*) fac 100I |> (string) |> (fu…

Problem 19

Problem 19■.NETライブラリを使ったパターン module Problem_0019 (* 【問題】 次の情報が与えられている。 1900年1月1日は月曜日である。 9月、4月、6月、11月は30日まであり、2月を除く他の月は31日まである。 2月は28日まであるが、うるう年のときは29日…