
|
December 2001 子供と算数の話をしていたときにふと素数の話になりました。そのちょっと前に「フェルマーの最終定理」なる数学の物語を読んでいたからかもしれません。その本の中には、素数にまつわるお話もいろいろとかかれてあったからです。 素数(2,3,5,7,11,13・・・)は、実生活の中でまったく縁のない数学の中だけの言葉のように感じている人もおおいかもしれません。要するに1とその数自身以外に約数のない数字と言う意味の数なのですが、実はネットワークに重要な役割を演じています。そして、あなたも知らぬ間に使っているかもしれません。 RSAという暗号方式を聞いたことがあるでしょうか?インターネット上でほぼ標準として使われている一つの暗号方式の名前です。インターネットエクスプローラーなどのブラウザには、この技術がバンドルされています。この暗号方式に欠かせないのが素数なのです。(RSAの概要参照)学校を卒業して社会人となってから、素数とか素因数分解なんて無縁のものと思っていませんでしたか?文化系の大学生でもほとんど学校ではお目にかかりませんよね。でも、パソコンの前に座って、インターネット経由で暗号化された通信、例えば、クレジットカード番号を入力して送信するとき等にこの暗号方式が使われていることがあるのです。 子供とは、こんな難しい話はしません。ただ、どうやって素数を求めるか?のお話をしていたのです。小学校か中学校の教科書に書いてあったと思うのですが、1つは エラストテネスの篩いという、表を書いて倍数を順番に消していく方法、もうひとつはパソコンならではの実際に数字を割ってみて虱潰しに確認する方法です。*1 最初の方法では、100まで程の10x10の表を作って、鉛筆で数字を消していきました。もう一つの方法では、素数かどうか確認したい数字の平方根(ルート)までを計算すれば良いことを教えて確認しました。子供とは、ここまでだったのですが、ふと今これを書いているパソコンでどのくらいのスピードで素数を見つけることができるか知りたくなりました。むらむらとこんな欲求が訪れるとどうしても止まらない性格は、子供そっちのけでコーディングを始めることに・・・。 以前は、VBやC、C++、JAVAなどで遊ぶこともあったのですが、最近は全く時間がなくこれらのコンパイラーもアップデートされておらず(Winで走るJAVA以外は)使うこともでない状態であったので、手近にあったエクセルのVBAを使うことにしました。ごちゃごちゃとやって数時間後、こんなものに仕上がりました。(Prime.xls) 最初、5万までの素数を見つけ、表示するのに16秒ほどかかったものが、最終版では1000万までの検索範囲で10秒もかからずにできるようになりました。この結果にちょっとした、軽いショックを受けました。どう考えても人生をかけてこの計算をしてもやり終えられないのに、目の前のパソコンが10秒かけずに終わらしたのです。100年カレンダーが死ぬ日が記載されているため自殺者を誘発すると言う話を聞いたことがありますが、それに似た人間の無力感を感じさせられました。頭では、判っていても、目の前で起こるとまた別の感覚が訪れます。
*1:素数探索の世界では、当然ながらしらみつぶしなどと言う稚拙な方法を取っていません。円周率の膨大な計算で新しく発見された収束の早い公式を使うのと同様に、プログラム部分以外でも効率の良い方法が色々と検討されています。素数にご興味がある方は、こちらに詳しいものがあります。(数学者の密室:素因数分解アルゴリズム)
おまけ: 一方、暗号解読を専門にやっているdistributed.netでは、さらなる分散コンピューティングの 計算パワーがあるようです。*3 ところでこれだけのパワーをかけて求められたメルセンヌ素数は、有効性の判らない意味のある数字として最大のものと言われているようです。(実際は、このメルセンヌ素数から計算される完全数の方が大きい数になります。笑)その一方で、メルセンヌ素数(または、完全数)の発見には賞金がかけられています。直近の賞金が出るメルセンヌ数は、1000万桁以上のメルセンヌ素数を最初に発見した人またはグループというものです。GIMPSのルールによれば、もしあなたがこのプロジェクトに参加して、1000万桁以上のメルセンヌ素数を見つけると$50000がもらえます。(ただし、P4-2GHzのマシンで 1000万桁の1つの数字を確認するのに約2ヶ月かかり*4、確率は約25万分の1だそうです。)もっと大きなメルセンヌ素数を見つけるともっと高額の賞金が貰えますが、現実的に今のコンピューターレベルでは難しいようです。ちなみに第39番目 と40番目のメルセンヌ素数を見つけた人には、それぞれ$5000の賞金が、1000万桁以上のメルセンヌ素数がこのプロジェクトで見つけられたときに 、その賞金から分与されます。まあ、賞金よりは、ピタゴラス、オイラー、ガロアなどと並んで(?)X番目のメルセンヌ素数を見つけた人として、数学史に隅っこに名前が残ることの方が、大きなことのように思います。これは、人類の歴史が続く限り、変わらない出来事(史実)となりますから。*5
*1:2001年末では、2TFLOPS程度でした。
各種分散コンピューティングプロジェクトの紹介: プロジェクトや参加のための情報が一覧となっています。 (Feburary 2004 update) |
![]()
02/27/04 Updated
Since 05/05/03
All Rights Reserved ビジネスで『使える英語』 by Skydaddy 2003