第10講 素数探索
第2話 素数研究の重要性
20=2×2×5
1より大きい素数でない数は、
すべて素数の積で表されます。
それで、1より大きい素数でない数を合成数というのです。
素数を調べ研究することは、
実はとても大切です。
なぜなら、素数は数の原子に当たるものだからです。
数の原子なら、素数の個数は有限なのでしょうか。
有限ではありません。
無限にあります。
古代ギリシャ時代に、無限にあることは証明されています。
素数など整数の性質を調べる学問を整数論と言います。
整数論は、数学者が好む領域です。
20世紀になるまでは整数論は純粋数学で、
応用とは無縁の領域であると考えられてきましたが、
現在は、大きな2つの応用領域をもっています。
1つは、物理学への応用です。
素数の規則性に関するリーマン予想というものがあります。
150年前にリーマンが立てた予想ですが、
世界中の数学者が証明しようと努力しているにもかかわらず、
現在でも証明されていない難問です。
整数論は、論証のみによって真偽が決まる学問ですし、
原子物理学は、実験によってのみ真偽の決まる学問です。
整数論と原子物理学には何の関係もないと考えれてきました。
しかし、1972年にリーマン予想を研究していた数学者ヒュー・モンゴメリーと
原子物理学者のフリーマン・ダイソンの出会いが、
驚くべき事実の発見へと繋がるのです。
素数の規則性を解明するために考えられたリーマン・ゼータ関数の零点を表す式が、
原子核のエネルギーの間隔を表す式と一致していたのです。
『素数は整数の原子』は比喩にすぎなかったのですが、
本物の原子と素数が深く関係していたのです。
原子は、素数によって支配されていたわけです。
自然は、原子から成り立ちますから、
自然=宇宙は、素数によって支配されていたのです。
ピタゴラス学派は、『宇宙の真理は数にある』
と考えていましたが、
2千数百年後にその考えが正しいことが示されてしまったのです。
さらに、原子はクォークという究極の単位から構成されています。
そのクォークを解明するための最有力理論である超弦理論に、
リーマン・ゼータ関数が絡んでいるのです。
ゼータ関数なしにクォークの振る舞いは解明できないのです。
宇宙を極限まで突き詰めていくと、リーマン・ゼータ関数が現れます。
簡単に言うと素数が現れるのです。
本当に驚くことですが、
超弦理論によれば時間を除いてもわれわれの住んでいる宇宙は、
10次元の世界である可能性があるのです。
3次元世界でさえ、無限に広いと思っていたのに、
実際には、10次元の世界から比べれば3次元宇宙は点にすぎないのです。
超弦理論によれば、SFで描かれてきたパラレルワールドは、
存在している可能性が高いのです。
光や電磁気力・核力などは、
われわれの3次元空間から飛び出ることは出来ませんが、
唯一染み出すものがあります。
重力です。
重力(子)以外は、3次元空間にべったりと張り付いていて、
3次元空間から抜け出すことが出来ないのですが、
将来、宇宙船を3次元空間から跳躍させる方法が見つかれば、
パラレルワールドへ旅することも出来るのかも知れません。
パラレルワールドは、物理法則さえ異なっている世界かも知れないのです。
そこには、われわれを遙かに凌駕する科学力をもつ知的生命体が存在していることでしょう。
超弦理論が描く世界は、
私たちの想像力を無限に刺激します。
その超弦理論と素数が分かちがたく結びついているのです。
まさに、宇宙の根源に素数が関わっているのです。
さて、もうひとつの応用領域はIT=情報技術です。
現在の社会は、ITなしには成立しません。
皆さんがお使いになっているスマホ、パソコン、インターネットは、
ITの直接の成果です。
現在の資本主義社会は、金融資本主義であるといっても、
間違いないほど金融は、現在の経済を動かしている中核です。
2007年のリーマンショックを思い浮かべれば、
一目瞭然です。
現在の金融産業もITなしには成立しません。
スマホや金融が安心して使えるのは、
実は、素数のお陰なのです。
素数を使った暗号理論によってセキュリティが守られているからです。
暗号キーとなっている素数を発見するには、
スーパコンピュータ京をもってして計算したとしても数億年はかかるのです。
ならば、量子コンピュータなどが実現して現在のスパコンの数千京倍(京は超の1万倍)
の演算能力をもったコンピュータが開発されたら・・・
セキュリティは破られてしまうのでしょうか。
心配ありません。素数は無限にあります。
将来の夢のコンピュータでも
太刀打ちできない巨大な素数を暗号キーに使えば良いのです。
整数論を使った暗号理論=RSA理論は、
永久に不滅と考えて良いでしょう。
さて、前置きが長くなってしまいました。
この講では、現代物理学と現代社会になくてはならない
大事なツールである素数を見つけるプログラムを組むことです。
第3話以降で具体的に組んでいきましょう。
どのようにしたら素数を探せるでしょうか。
for文ないしはtimesを使い、
例えば、1から10000まで整数を発生させて、
素数であるものを画面に表示したり、
配列に収納したりすれば、
素数を小さい順に見つけることが出来ます。
では、素数に判定はどうしたらよいでしょうか。
5が素数であるかは、
1から5まで割っていって、割り切れるものが1と5の2つしかないことを示せばよいですね。
割り切れるということは、割ったときの余りが0ということです。
では皆さんこの考え方で素数の探索をやってみましょう。
もちろん、今説明した方法はもっとも原始的な方法で、
より効率のよいプログラムは話の進展と共に考えます。
・・・
第1話へ 第3話へ
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
vba 2013 2010 2007 入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門第1部へ
本サイトトップへ