最強の夢のアプリ「素数チェッカ」の世界へようこそ!

  • 2016/07/08

    • ニュース

    最強の夢のアプリ「素数チェッカ」の世界へようこそ!

    巷では梅雨が明けないのに連日暑い日が続いていますが、ブルーバックスの一部では、素数や完全数の話題で熱くなっています。こちらでも取り上げましたが、「パフェの日」が完全数の組み合わせの日付になっていることを発見したり、『素数を奏でる物語』が関西の人気番組「探偵!ナイトスクープ」で取り上げられたり。少し前には、49番目のメルセンヌ素数が見つかった話題でもりあがっていました。そんな中、ブルーバックス一の数学オタクであるZが、ここ最近はまっているiPhoneアプリについて熱く語りはじめました‥‥。




    世の中に「素数」が大好きな人は多いと思います。
    素数の研究をされている専門家の方はもちろんのこと、趣味で素数の不思議を見たり聞いたり、追究されている方もいれば、素数Tシャツを着て素数の魅力をアピールしている方もいます。私も合成数よりは素数が好きです。ロッカーを使うときなども、何となく素数の番号を選んでしまいます。そして、うれしいことに誕生日を組み合わせると「グロタンディーク素数の57」になります。57は素数ではなく合成数(57=3×19で3の倍数)なのですが、あの20世紀を代表する数学者のグロタンディークが、授業中に57を素数だと勘違いしたことがきっかけで、グロタンディーク素数と呼ばれています。余談でした。

    そんな私が大好きなのが、iPhoneのアプリ「素数チェッカ」です。これは、ある数が素数かどうかを判定してくれるアプリです。世の中には星の数ほどアプリがあって、私のiPhoneにもたくさん入ってますが、一番のお気に入りはと聞かれたら、これしかありません。きょうは、そんな「素数チェッカ」の話をしたいと思います。

     

    最強の素数判定アプリ

    素数をチェックするアプリもいくつかあるのですが、私はその中で「素数チェッカ」が最強だと思っています。なぜ最強なのか、理由をあげていきます。

     

    -判定が速い

    まず「素数かどうかの判定が速い」こと。何十桁の数でも、ほんと、一瞬です。ためしに、5236874125896514291と適当に入力してみたら、あっという間に判定されて「素数」でした。ついてます! 50桁でも100桁でも同様です。アプリ内に膨大な素数リストでも持っているんじゃないのか? そんな想像をしてしまうほど、とにかく速いんです。

     

    -入力した数の前後5個ずつ(合計11個)を同時に表示

    最初にこのアプリを使ってみたときは、なぜこんな仕様になっているのだろうと不思議でした。しかし、使えば使うほど、この仕様こそ最強だと思えてきました。指で数を上げていけばドンドンと計算してくれるので、このあたりには素数はあまりないなとか、ここは1つ数が飛んで素数が現れている、とかがわかるのです。そう、1つ飛んで2つの素数が現れたら、双子素数です。つまりこの仕様なら、双子素数を目で見て実感することができるのです。三つ子素数、四つ子素数もしかりです。どうです、最強だと思いませんか!?

     

    -入力した数が素数の場合はオイラーのφ関数の値や原始根も計算
    -さらに「4n+1型の素数」の場合は2乗の和の形も示す

    たとえば、65557は素数ですが、712+2462と示してくれます(このあたりの理論的な説明はブルーバックス『素数が奏でる物語』をご覧ください)。しかも、アプリの説明によると、「4n+1型の素数」のほかにも、「3n+1型の素数」のときは、x2+3y2=pとなる数を、「8n+1型、8n+3型の素数」のときは、x2+2y2=pとなる数を、「8n+1型、8n+7型の素数」のときは、x2-2y2=pとなる数を示してくれるというのです。まさに、至れり尽くせりではないですか!

     

    -素数でない場合は親切に素因数分解をしてくれる

    素因数分解で現れた素因子の素数も、またすぐにどんな素数か調べることができる仕様になっています。

    素数好きにはたまらない「素数チェッカ」の魅力、みなさんに伝わりましたでしょうか。iPhoneをお使いの数学好きの方には、ぜひ試していただきたいアプリなのです。

     


    一番左は「素数チェッカ」の起動画面。いきなり、65537と65539が双子素数であることがわかって嬉しくなる! 65537をにタッチすると、オイラーのΦ関数の値=65536、原始根=3、2乗和などが表示される。左から3番目の画面は、適当に19桁の数、5236874125896514291を調べてみた結果。この数は、3n+1型、8n+3型の素数なので、それぞれ2乗を使った表示がされている。

     

    開発者に聞いた誕生のきっかけ

    まさに最強の素数判定アプリ「素数チェッカ」は、ではどんな人が開発したのでしょうか? 素数好きには違いないと思うのですが、実際のところはどうなのか。ぜひ会って、話を聞いてみたい……と思っていたら、念願かなって、開発者の方に本当にお目にかかれることになりました。

    「素数チェッカ」を開発したのは、システム開発会社ハートソリューションズの沼田一成さんです。思っていた通り、沼田さんは大の素数好きでした。それも、こちらの想像以上に素数愛にあふれた方でした。

    このようなアプリをつくることをどうして思いついたのかを伺うと、
    「街中の素数の写真がきっかけで」
    ‥‥ん、街中の素数?
    沼田さんは「街中の素数」のコレクターでした。「それって何?」と思われるでしょう。私たちは、街中の看板、標識、案内板などでさまざまな数字に出会います。沼田さんはその中に素数を発見しては撮影し、コレクションしているのです。私、素数が大好きな人にはたくさんお会いしましたが、街中の素数を集めている人には初めてお会いしました。というか、なんでこのようなコレクションをすることを自分は思いつかなかったのか……ちょっと残念というか、悔しいというか。


    皇居の北桔橋門(きたはねばしもん)の表示。天守閣跡に一番近い門で、当時は最重要の門と考えられ、濠も石垣も堅強に作られている。「昭和三十七年」の37が素数。漢数字の素数もコレクション対象です。

     

    意識して見渡すと、2、3、5など、小さい素数は街中ではわりと目にします。2階、3番線、5号館……このあたりの素数は集めやすいと思います。
    それがだんだんと、難しくなってくるのです。17は国道17号線の標識、31はサーティーワンアイスクリームの看板、はたまた79は「歯ブラシ セール79円」の値札から……と、難易度がどんどん上がっても、沼田さんはその行動力で素数を集めていきました。そしてついに101までを集めて、その成果を『街角素数』という本にまとめ、出版したのです。この本、コミケで発売したところ、用意した100部があっという間に売り切れてしまったそうです。多くの人が「街中の素数」の楽しさに気がついたのでしょう。

    『街角素数』の表紙に使われている素数は733です。その説明には、こうあります。
    「国道4号線の733kmキロポスト。国道4号線は日本で最長の国道であり、そのキロポストで最大の素数が733である。撮影場所:青森県青森市八重田」
    つまり、この733より大きいキロポストの素数はないのです。写真を見ていると、沼田さんの素数への想い、素数コレクションへの想いが、ありありと伝わってくるではありませんか。

    ただ、素数コレクションをしていくなかでは、ぬかよろこびもあったようです。
    「都道301号線」「都道319号線(通称外苑東通り)」「都道413号線」の301、319、413を「素数ゲット!」と喜んで撮影したあと、冷静になって計算してみたら、素数ではなく、結果的に空振りでした。確かに、301=7×43、319=11×29、413=7×59 です。
    この空振りが「素数チェッカ」の開発につながりました。街中で素数かどうか手軽にチェックするアプリがあれば便利だと考えて、自分自身で作ってしまったのです。沼田さんがiPhoneを使っていたので、iPhone用のアプリしかないのです。
    街中での素数コレクションのときに、手軽に素数チェックしたい――これが「素数チェッカ」開発のきっかけでした。

     


    工事中の看板。41と43の双子素数が表示されている奇跡的な一枚!

     


    セールの値札。素数の79円という値付けが絶妙。後ろに少し見える299は一見素数に見えますが、299=13×23なので合成数です。

     


    創業101周年というと創業は大正初期でしょう。101は珍しい四つ子素数の一つで、101、103、107、109が四つ子素数です。

     


    素数っぽい数が多く見られますが、この中で素数はどれでしょう? ---答えは「113」です。

     

    おそるべき実力から裏ワザまで

    沼田さんが自分のために作った素数判定アプリがバージョンアップして、現在の「素数チェッカ」になりました。これだけ判定がすばやいのは、膨大な素数リストを持っているからなのか質問したところ、こうお答えいただきました。
    「毎回、素数かどうか確認して、素因数分解も計算しています」
    素因数分解はフェルマー法、ポラード・ロー法、楕円関数法で計算し、また素数判定は、ミラー・ラビン法を使っているそうです。このミラー・ラビン法、計算は速いのですが確率的アルゴリズムであり、実は100%の確信を持って判定しているわけではありません。でも確率的にほぼ大丈夫だろう、と潔く速さを優先しているのも、好感をもちました。判定を間違える確率はどのくらいかと尋ねたところ、2の(-80)乗、すなわち10の24乗分の1の確率とのこと。これは計算上、隕石にあたる確率よりも小さい確率だそうです。

    では、いったいこの「素数チェッカ」、何桁の素数まで判定できるのでしょうか? 聞いてみたところ、
    「何桁でも、メモリの可能なかぎり」
    と、これまた心強い答え。実際に何桁まで計算できるのか、試してみましたが私にはわかりませんでした。さすがにこれなら無理だろうと思って入力しても、簡単に判定してしまうからです。さらに桁を大きくしていくと、とうとう表示される文字が小さくなって、読めなくなってしまいました。

    最後に、ちょっとした裏ワザも教えてもらいました。素数を長押ししていると、次の素数に飛ぶ仕様になっているのです。これを使えば、どんどん素数を見つけ出していくことができます!

    こんな素数愛にあふれる方が開発した、かゆいところに手が届く素数判定アプリ「素数チェッカ」、ほんとうにおすすめです。

    (写真はすべて沼田一成氏撮影)

新着情報一覧

ページTOPへ