中高数学駆け込み寺 素数判定の巻

現代の新たな遊びの形を探る

プログラムを書いて計算し倒そう

ここでは中高生向け算数・数学教育, そして大人向け算数・数学再学習のためのミニ講座を案内します. どなたでも無料で登録・受講できます. もしあなたがこれらのテーマに興味があるならぜひ気軽に登録してください. 気に入らなければワンクリックで簡単に登録解除できます.

中高数学駆け込み寺 素数判定の巻の登録はこちらから

このミニ講座のコンセプトは次世代に向けた算数・数学・プログラミングのハイブリッド教育, そして徹底的な具体性です. 以下, 詳しく説明します.

プログラミングの重要性

私はふだん数学・物理・プログラミングの学習・教育に関する情報を発信しています. 特に大学・大学院レベルの専門的な数学・物理がメインで, 中高生も対象にしてはいるもののメルマガ読者を見てみると大人の方が多いのが現状です.

この中でいわゆる文系プログラマーの人との付き合い・やり取りが増えてきています. 最近AIやらビッグデータやら一定以上の数学を背景にしたプログラミング仕事も増えていて, 私もこれらに仕事で出くわす機会が増えてきました. たいていの人は結果が使えればいいはずで, そんなに数学を知らなくてもいいのではないかと思っていましたし今も思っています. しかしいろいろな理由から数学も再勉強しようとする人が私が思った以上に多いようなのです. せっかくの機会だから数学も学び直そうと思う人もいれば, 実際にプログラムを書こうとしても数学的な背景がわからないからプログラムが書けないという人もいます.

一方これらとは全く関係なく, 趣味で数学を勉強している人もいます. その中にはプログラミングを本職にしている人もいれば, プログラミングを趣味にしている人もいます. 小学校の算数から復習している人もいれば, 中高数学を復習している人もいます. そして数学とプログラミングの交点で両方楽しみたい・遊んでみたい人が一定数います. この声に応えたのがこのミニ講座です.

必修化されるプログラミング教育に向けて

私はいま地元の中高生に向けた理工系教育の提案を作って実際に知人の政治家にも相談をしています. ここでは理工系の総合語学と称して, 大学でも必修であり私の学生時代の専門でもある数学・物理に加え, プログラミングと語学(英語)を軸にした提案です.

そんな中, とうとう2022年から高校でプログラミングが必修化されます. ただでさえ忙しい学校の先生が一から教材を作るのも大変だろうと思い, 何か提案ができないかと試作したのがこのミニ講座です.

ここでは特に数学・物理系, そして狭い意味での情報系(大学の情報科学科)に興味がある児童・生徒・学生向けのコンテンツです. 世の小中高校生向けプログラミングコンテンツを見ていると, アプリやゲームを作るタイプが多いように思います. 学校の教育でも広い意味での職業教育と絡めてITシステムの設計に関わる学習も大事にしているようです.

確かにこれらも非常に重要です. しかし数学・物理系の趣味志向を持つ私にはどうしても興味が長続きしませんでした. そしてある時ふと気付きました.

実際これなら私はいくらでも続けられることがわかりました. 情報系から見ても計算に関わる議論は本質的です. しかも実用性さえあって本当に役に立ちます. 例えば計算の手順を考え, その手順をプログラミングで組むアルゴリズム研究の分野もあります. 最近は競技プログラミングとして一種のゲーム・コンテストも一般的になっていて, ここで高い技術力を示した人向けの就職の口さえあります. AIやビッグデータに関わる数学・プログラミングでも必要な計算を高速処理するアルゴリズムの研究・実装は大きく重要な分野で, この点でも重要です.

趣味と実益を兼ね備え, 子供にとっても大人にとっても大事で役に立つ内容が展開できます. その広く深い世界に向けた案内がこのミニ講座です.

中高数学駆け込み寺 素数判定の巻の登録はこちらから

素数判定の重要性

まずは応用上の視点で言うと, 素数判定を基礎にした素因数分解は現代的な暗号理論の基礎です. もっと具体的に言えばオンラインショッピングや, 会員制サイトのログイン情報の漏洩を防ぐために使われている技術です. もちろんこのミニ講座では実際に使われている技術からすれば比較にならないほど簡単なことしかしていません. しかし最終到達点の高さもさることながら, 応用先の身近さが他の数学とは段違いです.

内容を理解しようと思うとどこかしらで数学に踏み込まざるを得ません. しかし理解への第一歩は小学校での割り算・あまりの計算です. 原理的には小学生でもわかる計算なのです.

そしてプログラミングとの相性も抜群です. 実際に子供達にプログラムを教えつつ素数の計算させてみたら, とんでもなく大きな数の素数判定を自発的にはじめた報告を見たことがあります. 見たこともない大きな数が出てくるのが楽しいようです. 実際, プログラムを書くと大きな数のチェックも簡単にできます.

適切なアルゴリズムを組むというプログラミング上の技術・知見も実体験から学べます. 大きな数の素数判定をしようと思うとかなり時間がかかります. 上で書いたように, オンラインショッピングなどの応用時, 計算に時間がかかりすぎては使い物になりません. 計算の高速化が応用上も大事なテーマで, 数学的な根拠を持ったプログラムの高速化の様子が具体的に見られます. はじめ素朴に書いたプログラムが何万倍も速くなります.

こうした多くの利点を鑑みて第一弾として素数判定を取り上げています.

深く勉強するには教える側に回るべし

特に理工系の大学でゼミ・セミナー形式の指導が採用される理由です. まず教える側に回ると当然教員を含めた参加者から「ここは何ですか?」と質問されます. どんな質問が来ても答えられるように担当者は入念に準備しなければならず, ここで精度が高く深い勉強が必然的に要求されるのです. もちろんそれを実行しようと思う強い意志とそれができる状況が必要ですが, 私や多くの知人の経験からしてもきちんと回れば教育効果は高いです.

実はもう一つ, やった人にはわかるポイントがあります. 実は教える側に回るとそもそも頭の使い方が変わり, 何か違うスイッチが入ります. 質問を受け, 考えて答えようとしたとき, 今まで思いつきもしなかった説明の仕方を思いつくことがあります. 他にもパッと頭に浮かんだ説明を話してみたら, 今まで腑に落ちなかった本や他人から聞いた説明の仕方とそっくりだったこともあります. この頭のスイッチの切り替えによる変化や理解の進化・深化が大事です.

時々教える側の自分こそが一番深く学べている実感があるという人さえいます. これを実際に実感してほしいのです.

さて, こう書いたはいいものの, あなたはこう思っているかもしれません.

これを実現する具体的な手段がプログラミングです. もちろん教える相手はコンピューターです.

生徒はコンピューター!

プログラムを書いてみるとわかります. コンピューターは尋常ではないほど頭が悪く融通もききません. あなたが教えた通り, つまりプログラムを書いた通りにしか動きません. そしてコンピューターに指示するべき内容が明確でなければプログラムをどう書けばいいかもわかりません. コンピューターに教える体で自分自身の理解も自動的に深まります.

中高数学駆け込み寺 素数判定の巻の登録はこちらから

現代的な道具をフル活用

いまはびっくりするくらいプログラミングを勉強しやすくなっています. 一昔前にプログラミングを勉強しようとした人は皆思うはずです.

プログラム自体は書こうと思えばいくらでも書けます. しかしそれを実行するまで持っていくのが大変なのです. ここで昔話をしても仕方ないのでこれ以上書きませんが, 必要なソフトをインストールするのも大変で, インストールしたあとに実行するのも大変でした.

しかし今はインターネット接続さえできればプログラムを実行できる環境がたくさんあります. ここでは特にGoogle Colaboratoryを前提にPythonでプログラムを書いています. AI関係でもPythonが現場で実際に使われる主な言語でさえあり, 数学系のプログラミングでもPythonを使っている本・コンテンツが非常に多くなっています. 2022年時点での社会的な状況とも相性がよく, それらの本やコンテンツでもよく使われる組み合わせです. このミニ講座を終えたあと, 自らの興味合わせて自学自習していくときにも役立つような配慮でもあります.

中高数学駆け込み寺 素数判定の巻の登録はこちらから

まずは飛び込んでみよう

数学でもプログラミングでも他の何でも, 実際にやってみないことにはわかりません. 多くの人にとって数学とプログラミングのセット学習は, きっと新たな, そして大きな挑戦です. そんな心理的ハードルを下げるためいろいろなことを書いてきました.

数学でもプログラミングでも, 頭の中でうんうん唸っているだけでは身につきません. 試行錯誤で七転八倒してようやく身につきます. かといって数学で試行錯誤した経験自体なく, どうしたいいのか本当にわからない人も多いことに気付きました. たくさん計算するといっても手計算が大変な場合もよくありますし, Excelでの表計算よろしく現代ではプログラムを書いて計算しなければならない状況もよくあります. これらの落とし所として素数判定の算数・数学からプログラム利用の計算までを三回で駆け抜けるのがこのミニ講座の目的です.

細かいところは気にせず, とにかくたくさん計算し倒してみてください. Google Colaboratoryを使えば簡単にプログラムを実行できるようにしてありますし, Google Colaboratory自体にも案内をつけています.

中高数学駆け込み寺 素数判定の巻の登録はこちらから