プログラミング

クロージャ

JavaScriptの勉強をしているのですが、今読んでいた本に出てきたクロージャを他の言語でも実装してみました。ちなみに、全て結果は以下となります。 2 101 3 102 JavaScript function closure(init){ var counter = init; return function(){ return ++count…

Project Euler 66, ペル方程式

久しぶりに Project Euler を解きました。 最近あまり簡単に答えが合わなくなってきてしまったのでちょっとへこたれて Euler から遠のいていたのですが、友達がPE66を解の公式から解いたというので私も試しました。とはいいつつもちょっと苦労したんですけど…

Project Euler 72, オイラー関数

http://projecteuler.net/index.php?section=problems&id=72この問題は明示的に書かれてはいないですが、オイラー関数を利用して解く問題のようです。 2〜1000000の各数に互いに素な数の個数を足していくのかぁ、、と思ったときにオイラー関数を思い出しまし…

Project Euler 75, ピタゴラス数

http://projecteuler.net/index.php?section=problems&id=75原始ピタゴラス数を求めて、その外周和の倍数をカウントしていく方法で実装しました。 Rubyで3秒。 ピタゴラス数というのは、a^2 + b^2 = c^2 を満たす自然数 (a,b,c) のことで、原始ピタゴラス数…

Project Euler 83

http://projecteuler.net/index.php?section=problems&id=83ダイクストラ法というアルゴリズムがあるのを知ったので、その方法で解きました。 ただ、実装の具体例などは全く見ていないためかなり独自実装です。適当に毎回全ノードを探索して、最短ルートを探…

Project Euler 295

久しぶりに難問のようです。 問題が公開されてから26時間経った現状で解答者が15人で、最も早い解答者でも3時間11分49秒かかっています。効率的なアルゴリズムというものがよく分からない私に取っては最近のも全て同じくらい難しいのですけどね。 ということ…

Project Euler 41、高速な素数判定

Pandigitalな数を作り、それを1つずつ素数判定する方法で求めました。(まあ、素直で愚直な方法です)今まで素数判定について、エラトステネスの篩で求めた素数に含まれているか?という手抜き方法で実装してきましたが、流石に速度をごまかせなくなったので…

Project Euler 200 を真面目に解く

以前、「2, 5 の倍数以外は、耐素数性はない」と仮定して解いたが、200番目までは問題ないようだが、ずっとそうではないようなので、完全に解けるアルゴリズムを考えた。 まず a**2, b**3 (a,bは素数)のそれぞれの1次配列を作成する lista = [4, 9, 25, 49, …

Project Euler 200

色々飛ばして一気に200問目。 2, 5 の倍数以外は、耐素数性はないと仮定して解いた。手順はこれ。 q = 2 と固定して、条件を満たす sqube を小さいものから200個リストアップする。 次に q = 5 と固定して、リストアップ済みの sqube の最大値以下でかつ、条…

引き続きProject Euler

引き続き Project Euler を解いています。 なんだか時間を浪費しているように思えてならないのですが、なぜか魅力があります。 Project Euler 30 http://odz.sakura.ne.jp/projecteuler/index.php?Problem%2030この問題、単純に計算する範囲を絞るだけの問題…

Project Eulerを始めてみました

Project Euler というのはこんなサイトです→ http://projecteuler.net/ 素晴らしいことに日本語のサイトもあります→ http://odz.sakura.ne.jp/projecteuler/プログラムで解くことの出来る数学の問題がたくさん登録されており、それをみんな好きな言語で解い…