コラッツの問題
コラッツの問題とは、ある自然数nに対し
- nが偶数ならnを2で割る
- nが奇数ならnを3倍して1を加える
を繰り返すと最終的にnは1になるというものです。詳しいことはWikipediaを読んで下さい^^;(このブログ、難しいことはいつもWikipediaまかせなのです)
これ、何が問題かというと「初期値にどんな自然数を与えても最終的には1に到達するのか」という問題です。(未だ未解決だが、3×2の53乗までは確かめられている)
コラッツの問題で行う操作をC言語プログラム化したのが次のコードです。(2007年のパソコン甲子園本戦問題にもなっています)
#include int collatz(int n) { int count = 0; while(n != 1){ n = (n%2 == 0) ? (n / 2) : (n*3 + 1); printf("%d\n", n); count++; } return count; } int main(void) { int n, count; printf("Input n:"); scanf("%d", &n); count = collatz(n); printf("COUNT:%d\n", count); return 0; }
例えば、nに5を入力すると5,16,8,4,2,1で繰り返した回数が5回となります。
| 固定リンク
「C」カテゴリの記事
- CG法(2008.12.09)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その5(2008.10.10)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その4(2008.10.09)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その3(2008.10.08)
- NTEmacs + MinGW + MSYSでWindows上にC言語開発環境を構築してみる - その2(2008.10.07)
「Algorithm」カテゴリの記事
- コラッツの問題(2008.02.21)
- フィボナッチ数を求める(2008.02.19)
- べき剰余を求める(2008.02.12)
- RSA暗号プログラム(2008.02.09)
- RSA暗号の公開鍵と秘密鍵を生成する(2008.02.08)
この記事へのコメントは終了しました。
コメント
開発者・技術者の支援プロジェクト紹介
開発者・技術者特化型の事業支援プロジェクト
『スプリング・テック・キャンプ2008』(STC2008)の運営開始!
~開発者・技術者を大募集!~
初めまして。ALITO株式会社のスプリング・テック・キャンプ2008(STC2008)事務局の井上と申します。 突然のメッセージで失礼致します。
国内外企業のインキュベーション事業を展開するALITO株式会社(本社:東京都中央区)は、開発者及び技術者に焦点を当てた起業家支援プロジェクト『スプリング・テック・キャンプ2008』(以下、STC2008)を開始します。このプロジェクトは、開発者及び技術者がこれまで培った技術を活用し、自分が作りたいサービスを思う存分2ヶ月間で開発して頂くために、当社が最大限に支援するプロジェクトとなります。志望者は、開発したいソフトウェア、サービスをベンチャー企業経営者にプレゼンテーションして頂きます。支援決定後、志望者は、実施期間中は開発環境や食事、宿泊施設、交通費などを受け、STC2008に集まったメンバーと共に切磋琢磨し、開発していただきます。また、支援対象者にはSTC2008後も事業化の見込みがあるソフトウェア、サービスに関しては大きく3つの支援をさせて頂きます。まず、当社からの資金支援のサポートに加え、銀行や大手VCを紹介し、銀行、VCに対するプレゼンのサポートをさせて頂きます。次に、事業計画や経営戦略などの立案や営業代理、提携先斡旋などの営業面の支援をさせて頂きます。最後に、オフィス提供や開発用PC、サーバー、ネット環境などのインフラ提供、事務支援、会計・財務、法務などのバックオフィス・環境面等を支援させて頂きます。日本では、あまり馴染みがないかもしれませんが、アメリカでは、このような支援プロジェクトがわりとポピュラーでこのような環境から起業し、成長しているビジネスが多々あります。
詳細は、
http://www.alito.co.jp/stc2008.html
となります。
募集をお待ちしております。
よろしくお願い致します。
投稿: stc2008 | 2008/04/11 18:39