« DreamSpark | トップページ | Happy Hacking Keyboardが欲しい・・・ »

2008/02/21

コラッツの問題

コラッツの問題とは、ある自然数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回となります。

|

« DreamSpark | トップページ | Happy Hacking Keyboardが欲しい・・・ »

C」カテゴリの記事

Algorithm」カテゴリの記事

コメント

開発者・技術者の支援プロジェクト紹介


開発者・技術者特化型の事業支援プロジェクト
『スプリング・テック・キャンプ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

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: コラッツの問題:

« DreamSpark | トップページ | Happy Hacking Keyboardが欲しい・・・ »