mattyuuの数学ネタ集

世界は数式で溢れている

書を捨てよ町に出よ素数を見つけよう!

はじめに

2017年4月1日に「【非公式】ロマンティック数学ナイトボーイズ(以下、ロマ数ボーイズ)*1」という数学イベントを主催し、私も掲題のタイトルでプレゼンを行いました。当日の様子は近いうちにレポート形式で公開しようと思います*2が、まずは私のプレゼンの内容を公開します。イベント開催日もブログ公開日もエイプリルフールである4月1日ですが、本記事の内容に嘘はないことは明言しておきます。

なお、「ロマ数ボーイズ」の開催宣言は私の素数記念日に行っています。

また、私が初めて公の場で数学の発表を行った2016年10月1日の第7回日曜数学会「リーマンゼータ関数のゼロ点を手計算してみた*3」のプレゼンからちょうど半年ということで、いろいろな意味でとても感慨深いイベントとなりました。この半年間で今まで付き合ってこなかったような方とたくさん知り合いになれました。今後ともよろしくお願いします。

また、今後出会うであろう数学好きの方、数学好きになりそうな方、数学嫌いでも必要だから学ぼうとされている方、今後よろしくお願いします。

2018年4月13日追記)
素数コレクターを本家のロマンティック数学ナイトでもプレゼンしました。その時の様子がYouTubeで公開されておりますので、是非ご覧ください。

20170701ロマ数⑧素数と戯れよう(松中プレゼン)

では始めます。

f:id:mattyuu:20170327004704j:plain

みんな大好き素数

というのは言い過ぎですが、少なくとも数学好きの方の中には素数好きは多いです。「ホテルの部屋番号が素数!だった!」とか、「AKB48の総選挙のさっしーの得票数が素数だ!」というようなツイートを見かけることがありますし、今年「素数大富豪*4」はメディアにも取り上げられ今まで数学を意識していなかった多くの方がその存在を知るところになりました。また、先日は素数姫さんが「素数に恋する女*5」という本を発売するなど数学界は素数の話題に事欠きません。

かく言う私も素数が好きです。居酒屋の靴箱の番号や駐輪場の駐車番号では必ず素数を探し、靴を入れ、自転車を止めています。アパートの部屋番号も301、素数です。

こんなツイートもしています。

数学者、数学好きの方が素数を愛する理由は様々なものが考えられますが、私が一番の理由と考えるものは「無秩序の中の秩序」という言葉で表せます。数学者は様々なものを観察し、そこから共通のパターンを抽出し、一般化、抽象化して強力な理論を組み立てます。そういった意味で数学者はパターンを探す天才です。そして古くから知られている対象であるのに数学者がそのパターンを見出せない存在、それが素数なのです。

素数は多くの天才数学者からの「お前を制御したい」というアプローチをひょいとかわします。それほど素数は無秩序です。しかし無秩序であると考えられてきた素数が、実はある側面では驚くべき秩序を兼ね備えていることを数学者達は歴史を通して発見してきました。ここでは私が特に「秩序ってるなぁ」と思う3つの数式、定理を言葉だけで簡単に紹介します。(わからなくても本記事には関係ないので気にしないでください)


f:id:mattyuu:20170327004719j:plain

これほどまでの驚くべき秩序を兼ね備えながら、今の所出現が予測できない無秩序な素数、、、やばいですよね。。。

素数コレクター!」概説

というわけで、まとめると数学好きの方は街中で素数を探してしまうんです(少なくとも一人はいます。私です。)。でも街中の素数との出会いは一期一会。わざわざどこでどんな素数に出会ったかなんてめんどくさくて記録できません。それでも素数との出会いを大切にしたい。。。悩める日々の中で私が思いついた解決策、それが「素数コレクター!」の開発でした!

ジャジャーン!
f:id:mattyuu:20170327012539j:plain
(トップページの画面右下くまさんの顔をタップすると次の画面に進みます。#BAD_UI)

素数コレクター!」は私が開発したAndroidアプリです*6。このアプリは、街中で撮った写真から素数を自動で抽出し、自分だけの素数図鑑に登録してくれます。素数との出会い日記帳を作るイメージです。素数好きの方にとったら、まさに夢の素数アプリではないでしょうか。メイン機能としては「素数コレクト!」、「素数図鑑」、「ステータス」の3機能があります。次章から1つずつ紹介していきます。

素数コレクト!」機能

これがまさに「素数コレクター!」の肝となる機能です。トップページからの初期遷移時は下記のような画面になっています。

f:id:mattyuu:20170327012754j:plain

[画像選択]ボタンを押して過去にとった写真を選択する、もしくは[カメラ起動]ボタンを押して写真を撮ると、下図のように写真が画面に表示されます。(下の例は私が過去にRSA暗号について語った時のプレゼン資料をカメラで撮ったものになります。)

f:id:mattyuu:20170327012807j:plain

さあ、この状態で[素数コレクト!]ボタンを押しましょう。白黒のテキスト写真であれば数秒で、今回の例のようなカラフルな写真であれば10秒程度で素数抽出処理が完了し、下の図のように写真内の数と素数がそれぞれ抜き出されます!

f:id:mattyuu:20170327012818j:plain

確かに"5"、"29"と素数が抽出されていることがわかります。しかし"27"はどこにあるのでしょうか?実はわかりにくいですがこの画像ファイルの左上に"27.jpeg"というファイル名が表示されています。ここから"27"が抽出されたのです!なんかすごくないでしょうか?*7

とは言っても、この写真ファイルからテキスト情報を抜き出す処理はGoogleのWeb API*8を使っています。この処理の部分は私が開発したところではないことを明言しておきます。さすがGoogle様。貴方のおかげで「素数コレクター!」が作れました。ありがとうございます。

一点補足すると例えば"7253"という数字列があった時、「素数コレクター!」では"7"、"2"、"5"、"3"や"53"といった素数はコレクトせず、あくまで"7253"という素数のみをコレクトするようにしております。また"2,200円"と記載された広告を写真に撮ってコレクトした場合は、"2"と"200"を写真内の数字列として分けて取り込み、結果"2"が素数としてコレクトされます。

こうして抽出された素数"5"、"29"は素数図鑑に記録されます。次の章では「素数図鑑」機能を紹介します。

素数図鑑」機能

さて「素数コレクト!」画面で画面左部分を画面外から画面内にスワイプすると、下図のようにメニューがするーっと現れます。

f:id:mattyuu:20170327012831j:plain

ここから別の機能に遷移することができます。では「素数図鑑」メニューをタップして素数図鑑を見てみましょう。

f:id:mattyuu:20170327012840j:plain

素数図鑑」画面では今までに「素数コレクト!」機能で見つけた素数が登録されます。リスト形式になっておりスワイプすることでより大きな素数も見ることができます。

f:id:mattyuu:20170327012848j:plain

しかし、これでは見出しがあるだけで図鑑にはなっていませんね。安心してください、これでは終わりません。では今回見つけた"5"をタップしてみましょう。

f:id:mattyuu:20170327012900j:plain

なんと"5"の詳細ページに飛び、画面下部にはWikipediaのページが現れました!スワイプすることで"5"に関する様々な情報をWikipediaから学ぶ事ができます。

f:id:mattyuu:20170401081205j:plain

さて画面上部には"5"を今まで何個見つけたかも表示されています。そして、その横には[生息地確認]ボタンをいう気になるボタンがあります。早速タップしてみましょう。

f:id:mattyuu:20170327012933j:plain

なんとGoolge マップの画面が現れ、これまでに自分が"5"を見つけてきた場所にピンが打たれているではありませんか!これで"5"さんとの思い出の場所を覚える必要がなくなりますし、"5"さん以外の別の素数さんとの思い出と"5"さんとの思い出が混ざってしまって、"5"さんと微妙な関係になってしまう事も防げそうです。

、、、

というわけで、最後に「ステータス」機能を紹介します。

「ステータス」機能

「ステータス」機能は今までの機能とは違いとてもライトな機能になっており、次の1画面だけでボタン等の利用者が制御できる部品はありません。

f:id:mattyuu:20170327012924j:plain

ここではこれまでに見つけた、

をそれぞれ確認することができます。画面下部ではくまさんが貴方の素数コレクターとしてのレベルを教えてくれます。

しかし、レベルは素数のコレクト率(=全素数の種類に対する、集めた素数の種類の割合)で算出するようにしております。素数が無限個あることから、何億種類の素数を集めてもそのコレクト率が0%より大きくなることはありません。つまりみんないつまで経っても「見習い素数コレクター」です。素数の前ではみんな平等という勝手なコンセプトを打ち出しているのです。

以上で「素数コレクター!」全体を通しての機能説明を終えます。

ロマンティック成分

このプレゼンはロマ数ボーイズのために用意したものであることを思い出してください。ロマ数ボーイズではプレゼンターの方に、プレゼンにロマンティック成分を入れていただくように事前に頼んでおりました。当然私も「素数コレクター!」を使ったロマンティックなプレゼンをする必要があります。

ロマンティックを演出するために題材として選んだのは、、、、なんと山手線です!

JRの路線図などを見ると山手線は円であるようにデフォルメされていますが、実際はグニョグニョしており、実はハート形に見えなくないのです。

d.hatena.ne.jp

この山手線沿線で素数を探し、その素数の生息地がハート形になればこんなロマンティックなことはないのではないでしょうか。

ということで、山手線沿線で素数を集める旅に出ました。集める素数として選んだのは、自分が見習い素数コレクターであるということも加味して、一番難易度が低そうな"2"にしました。

自分で作ったアプリを片手に素数を集めに町に出る、、、、なんて幸せなことなんでしょう。有楽町でレンタサイクルを借り、反時計回りに山手線を回りながら素数"2"を探しました。


f:id:mattyuu:20170327004754j:plain

そして素数を探していると、縦書きの数字列も認識するという事実を発見しました。下の図は居酒屋の看板ですが、看板の右後方にひっそりと数字列が存在しています。その数字列が横方向、縦方向それぞれ認識されていることが分かるかと思います。さすがGoogle様です!

f:id:mattyuu:20170327004906j:plain

慣れない土地で道に迷ったり、自転車だったら歩道橋が使えず途方にくれたり、夜になって素数が見つけにくくなったり、雨が降ったり、寒かったり、、それなりに苦難をのり超え2日間で8時間をかけ"2"を集め、完成したのが次の"2"の生息地です!


ジャジャーン!
f:id:mattyuu:20170327010008p:plain

ハートのくぼみを顕著に出すために、途中山手線から離れている箇所もあります。また、時間と気力がなく品川の方までは下がれませんでした。細かい話は抜きにしても、これはどっからどう見てもハートじゃないでしょうか。

この素数"2"の生息地をプリントアウトして、高級指輪の箱に詰め、彼女に「君のためにこの大都会東京に素数でハートを描いたよ」と決め台詞を吐けば結婚間違いないでしょう*9

まさに、ロマンティック!!
f:id:mattyuu:20170327005122p:plain

余談にはなりますが、池袋、新宿の南側にそれぞれ素数砂漠 *10を見つけたことをご報告させていただきます。

f:id:mattyuu:20170401081244j:plain

さいごに

さいごに「素数コレクター!」の地域格差及び数学の力について語らせてください。

「都会は看板や建物が多いから素数がたくさんあっていいよね、、、僕の住んでる田舎は田んぼや畑ばっかりで素数なんてちっとも見つからないよ。これじゃポ◯モンGOと同じで地域格差が生まれちゃうよ」と嘆かれてる方もいるかも知れません。

しかし、本質は違うんです!この素数コレクターで集めているものは実は素数ではなく、人間が勝手に作った素数を表すただの記号(数字)の列なのです。本来素数はどこかにあるようなものではなく、また本来素数はどこにでもあるものなのです!

田舎でも紙とペンを用意して紙に"2"という記号を書けばそこに素数(と呼んでいる数字列)が現れます。その"2"を出発点として紙の上でペンを走らせれば、どこにもないはずの世界が、そしてまた驚くほど豊潤な世界がはっきりと広がっていくのです。これが数学の力なんです!都会は表向きは素数が溢れ、田舎には素数がないように思えてしまいますが、それはまやかしです。数学の世界は全ての存在に対して平等です。当然都会も田舎も全く関係なく平等なのです!

f:id:mattyuu:20170327015441j:plain

スペシャルサンクス

このハートマークを作るための素数集めの旅において街中のいろいろな方にお世話になりました。お世話になった方々へのお礼を記載して本記事を締めくくりたいと思います。お世話になったレベルの高い順にベスト3をランキング形式で掲載します。最後まで読んでいただきありがとうございました。

[第1位]テナントビルの階数表示さん

f:id:mattyuu:20170327005215j:plain

そろそろ素数が欲しいと思った時、周りを見渡せば貴方がいてくれました。テナントビルは普通二階以上あるので簡単に"2"を集めることができました。本当にありがとうございました。

[第2位]電信柱の住所表示標識さん

f:id:mattyuu:20170327005228j:plain

例えば何処かの街の二丁目に差し掛かると、出会う貴方は皆"2"を持っていました。ハート形のくぼみのところの"2"を集める時は大変お世話になりました。ありがとうございました。季節の変わり目ですので、くれぐれもお体に気を付けてこれからも頑張って下さい。

[第3位]建築計画さん

f:id:mattyuu:20170327005239j:plain

上位2名の方に比べたら出会う機会は少なかったですが、貴方にはたくさんの文字列が書いてあります。探せば大抵そこには"2"もあり、貴方は特別な安心感を与えてくれました。ありがとうございました*11

ちなみにお世話になったランキング第4位は賃貸アパマンの広告さんでした。写真は載せませんが、ありがとうございました。

f:id:mattyuu:20170401081305j:plain

*1:和から株式会社様主催の公式の「ロマンティック数学ナイト」に対して、個人で勝手に企画したイベントですので【非公式】としております。名称を使う許可は頂いています。同日同時間帯に公式のロマンティック数学ナイトガールズが開催されておりました。

*2:2017.4.3追記 もっちょさんがtogetterしてくださったので、こちらで当日の雰囲気がバッチリわかります。https://togetter.com/li/1096657

*3:mattyuu.hatenadiary.com

*4:下記が素数大富豪の考案者せきゅーん氏の素数大富豪のまとめサイトになります。 integers.hatenablog.com

*5:私も持ってます!

素数姫の素数入門

素数姫の素数入門

*6:いつかGoogle play ストアに公開したいです!が、今のところいつになるかわかりません。自分が趣味で作ったアプリが何かの間違いで第三者Androidを壊してしまう、といった恐怖もありますし、作り込みが甘いところがあったり、現状ソースが汚かったりすることも理由です(APIの結果のjsonをオブジェクトではなく文字列として扱っているところ、数の抜き出しを正規表現ではなく、ゴリゴリで行っているところなど。自分でソースが汚い、作り込みが甘いと認識できているだけマシとは思いますが。。)。有識者の方にレビューをいただきながらしっかり完成させ公開したいです。

*7:しかし当然ながら素数の抜き出しに100%成功するわけではありません。どんな写真を撮るかで成功率は大きく上下しますが、私が素数を抜き出すために撮った(それなりにちゃんと素数が写っている)写真での成功率は80〜90%くらいという感覚です。大抵撮り直せばちゃんと取り込まれます。取り込まれないものはどんだけ写真を撮っても取り込まれませんでした。この辺りはGoolge様のAPIの進歩で改善していくのではないかと思います。

*8:こちらのCLOUD VISION APIOCR機能になります。 cloud.google.com

*9:同じようなプロポーズネタを以前の有限体上の楕円曲線のオチとして書いたので、まだ読まれてない方は是非読んでみてください。 mattyuu.hatenadiary.com

*10:2,3,5,7,11,13,,,と素数は無秩序に無限に出現しますが、しばらく素数が出現しない区間素数砂漠と呼んでおります。実は任意の長さの区間からなる素数砂漠が存在することを中学、高校レベルの数学で簡単に示すことができます。

*11:建築計画の写真を撮る私の姿はあまりにシュールで、周りの方々に建築オタクと思われてしまった可能性があります。建築オタクではなく数学オタクですのでそこんとこよろしくお願いします。