プロジェクト・オイラーのソースを表示
←
プロジェクト・オイラー
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{Infobox Website | name = Project Euler | commercial = 非営利 | logo = | screenshot = [[Image:Leonhard Euler.jpg|Euler|125px]] | caption = | url = [http://projecteuler.net/ projecteuler.net] | type = 問題解決[[ウェブサイト]] | registration = 無料 | owner = | author = Colin Hughes | launch date = 2001年10月5日 | current version = | revenue = | employees = }} '''プロジェクト・オイラー'''({{lang-en-short|Project Euler}}、名称は[[レオンハルト・オイラー]]由来)は、[[数学]]やプログラミングなどに興味を持つ大人や学生が主な利用者であり、[[プログラミング (コンピュータ)]]による一連の計算問題の解決を目的とした[[ウェブサイト]]である。 800以上<ref>{{cite web|url=http://projecteuler.net/problems |title=Project Euler (list of problems) |accessdate = 2012-11-06}}</ref>の問題のほかに毎週末ごとに1問ずつ増えており、様々な難問が用意されているが、 一般的なスペックのパソコンで効率的な[[アルゴリズム]]を用いれば、いずれも1分未満で解ける。 正答回答者のみが各問題の掲示板を閲覧できる<ref>{{cite web|url=http://projecteuler.net/about |title=Project Euler - About |accessdate=2008-04-04}}</ref>。 2001年に創設されて以来世界的な知名度と人気を得ており、2013年10月の時点では世界中から34万人以上の利用者(最低1問以上の正答者)を有する<ref>{{cite web|url=http://projecteuler.net/statistics |title=Project Euler (Statistics) - not accessible for anonymous users |accessdate = 2012-11-16}}</ref>。 利用者は正答数に応じて最大16のレベルが振り分けられ、各々の進捗状況を確認できる。 サイト内の問題は[[APL]]の[[プログラミングコンテスト]]での使用実績があり<ref>{{cite web|url=http://www.dyalog.com/contest2009/qanda.html|title=APL programming contest|accessdate=2010-11-02}}</ref>、[[オンライン整数列大辞典]]では68問を引用している<ref>{{cite web|url=http://oeis.org/search?q=%22Project+Euler%22&sort=&language=english&go=Search|title=OEIS sequences referencing Project Euler problems|accessdate=2011-04-15}}</ref>。 == 問題解答例 == 最初の問題 <blockquote>10未満且つ、3または5の倍数は、3、5、6、9であり、左の[[総和]]は23である。 同様に、1000未満且つ、3または5の倍数の総和を求めよ。<ref group="注">[[排他的論理和]]でなく[[論理和]]による</ref> </blockquote> 上記の例は典型的な問題よりもはるかに易しいが、ここでは効率的なアルゴリズムにより本質的な違いを例示するために挙げる。 [[力まかせ探索]]アルゴリズムは、1000未満のすべての自然数を調べ、基準値の総和を算出する。 以下に、簡単な[[擬似コード]]を示す : <pre> Set TOTAL to 0; for every number NUM from 1 to 999 do if NUM mod 3 = 0 or if NUM mod 5 = 0 then add NUM to TOTAL; output TOTAL </pre> 難問解答の際には、効率的なアルゴリズムがより重要になる。 上記の場合は、[[包除原理]]と[[閉形式]][[総和]]により、1000回のループ文処理を避ける。 : <math>\begin{align} \mathrm{sum}_{\text {3 or 5}}(n) & = \mathrm{sum}_3(n) + \mathrm{sum}_5(n) - \mathrm{sum}_{15}(n) \\ \mathrm{sum}_k(n) & = \sum_{i=1}^{\left \lfloor \frac{n-1}{k} \right \rfloor} ki \\ \sum_{i=1}^n ki & = k\frac{(n)(n+1)}{2} \end{align}</math> この場合、<math>\mathrm{sum}_k(n)</math>は<math>n</math>未満の<math>k</math>の倍数の総和を示す。 [[ランダウの記号]]による記法では、前述の力まかせ探索アルゴリズムはO(n)、上記の効率的なアルゴリズムはO(1)と示す。 == 脚注 == === 注釈 === {{reflist|group="注"}} === 出典 === {{reflist|2}} == 外部リンク == * [http://projecteuler.net 公式サイト] * [http://euler.jakumo.org Jakumo : ロシア版] * [https://web.archive.org/web/20131213001835/http://projecteuler.javafling.org/ ルーマニア版] {{Internet-stub}} {{DEFAULTSORT:ふろしえくとおいらあ}} [[Category:パズル]] [[Category:教育のウェブサイト]]
このページで使用されているテンプレート:
テンプレート:Cite web
(
ソースを閲覧
)
テンプレート:Infobox Website
(
ソースを閲覧
)
テンプレート:Internet-stub
(
ソースを閲覧
)
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
プロジェクト・オイラー
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報