Excel関数で「約数」を探る数学パズル

Excel関数で「約数」を探る数学パズル Excel

本記事では、無料のWeb版Excelを使用して検証および画像の作成を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!

はじめに:Excelで算数・数学の世界を探求しよう!

Excelの本当の面白さは、ただの表計算だけにとどまらないところにあります。

今日は、皆さんと一緒に、Excelを使って算数・数学の奥深い世界を探求する、知的な冒険に出かけたいと思います。

今回のテーマは「約数」です!

約数…?なんだか難しそう…」

そう思ったあなた、心配はご無用です!

内容は小学生レベルの算数からスタートします。

そして、それをExcelの関数という魔法の杖を使って、目に見える形にしていく。そんな楽しい旅になりますよ。

この関数パズルを通して、あなたのExcelスキルだけでなく、数学的な思考力も自然と磨かれていくかもしれません!

さあ、準備はできましたか?数字の神秘を解き明かす冒険に出発しましょう!


ステップ1:冒険の準備 – 1から1000までの数字を用意する

何事も、まずは準備から。今回の冒険の舞台となる、1から1000までの連続した数字を用意しましょう。

まず、まっさらなシートのA1セルに「連番」と入力します。

そして、そのすぐ下のA2セルに、おなじみのこの数式を入力してください。

=SEQUENCE(1000)

Excel説明画像

SEQUENCE関数は、指定した数の連続した数値(配列)を生成してくれる、非常に便利な関数です。

引数に「1000」と指定するだけで、あっという間に1から1000までの連番をスピル機能で表示してくれます。

どうです?これだけでもう、冒険の始まりのようでワクワクしてきませんか?


ステップ2:約数の個数を数える – 割り切れる数、いくつある?

さて、ここからが本番です!

そもそも「約数」ってなんだっけ?

約数」とは、ある整数を割り切ることができる整数のことです。

例えば、「6」の約数を考えてみましょう。

  • 6 ÷ 1 = 6 (割り切れる!)→ 1は6の約数
  • 6 ÷ 2 = 3 (割り切れる!)→ 2は6の約数
  • 6 ÷ 3 = 2 (割り切れる!)→ 3は6の約数
  • 6 ÷ 4 = 1.5 (割り切れない…)
  • 6 ÷ 5 = 1.2 (割り切れない…)
  • 6 ÷ 6 = 1 (割り切れる!)→ 6は6の約数

つまり、6の約数は「1, 2, 3, 6」の4個、ということになります。簡単ですよね?

【豆知識】約数が分かると何が嬉しいの?
約数は、素因数分解(数を素数の積で表すこと)の基礎となり、暗号技術(RSA暗号など)や、物を綺麗に並べる方法(例: 12個のお菓子を2×6, 3×4, 1×12の長方形に並べる)など、実は身の回りの様々な場面で活躍している、縁の下の力持ちなのです!

Excel関数で「約数の個数」を数えよう!

この「割り切れるかどうか」というロジックを、Excel関数で表現してみましょう。

「割り切れる」ということは、言い換えれば「割った余りが0になる」ということですよね?

この考え方を素直に数式にすると、とても分かりやすくなります。

B1セルに「約数の個数」と入力し、B2セルに以下の数式を入力します。

=SUM(N(MOD(A2,SEQUENCE(A2))=0))

入力したら、B2セルのフィルハンドルをダブルクリックして、一番下まで数式をコピーしてください。

Excel説明画像

さあ、A列の数字に対応する約数の個数が一瞬で計算されました!

数式の解説

この数式、一体何をしているのでしょうか?分解してみましょう!

ここではA7セル「6」の場合を例にします。

SEQUENCE(A7): まず、SEQUENCE関数が、1からA2セル(6)までの連番 {1;2;3;4;5;6} を作ります。これが「割る数」の候補になります。

Excel説明画像

MOD(A7,SEQUENCE(A7)): 次に、MOD関数が、A7セル(6)を、先ほど作った連番で一つずつ割った「余り」を計算していきます。結果は {0;0;0;2;1;0} という、余りの配列になります。

Excel説明画像

... = 0: この余りの配列が、「0」と等しいかどうかを判定します。余りが0(つまり割り切れた)の部分はTRUE、そうでない部分はFALSEになります。

結果は {TRUE;TRUE;TRUE;FALSE;FALSE;TRUE} という論理値の配列です。

Excel説明画像

N(...): N関数が、このTRUE/FALSEの配列を、数値の1/0に変換します。{1;1;1;0;0;1}

Excel説明画像

SUM(...): 最後に、SUM関数がこの1と0の配列を合計します。

1の個数、つまり割り切れた数=約数の個数が「4」と計算されるわけです。直感的で分かりやすいですよね!

もう一つの考え方

ちなみに、割り算の結果そのものを使って判定する方法もあります。

=SUM(N(A2/SEQUENCE(A2)=INT(A2/SEQUENCE(A2))))

という数式です。

これは、「割り算の結果」と「割り算の結果の整数部分」が等しいかどうかを比較しています。

割り切れたときだけ両者が一致することを利用した、こちらも非常に賢いロジックですね!


ステップ3:素数を見つけ出す – 約数が2個だけの特別な数

さて、B列に並んだ「約数の個数」をじっと眺めてみてください。

何か気づくことはありませんか?

そう、「2」という数字が頻繁に登場しますよね。この「約数の個数が2個」である数こそが、数学の世界で非常に重要な「素数」なのです!

Excel説明画像

「素数」とは?

素数とは、「1とその数自身しか約数を持たない、1より大きい自然数」のことです。

例えば、「5」の約数は「1, 5」の2個だけ。だから5は素数です。
7」の約数も「1, 7」の2個だけ。だから7も素数です。

でも、「6」の約数は「1, 2, 3, 6」の4個なので、素数ではありません。

この素数、実は現代のインターネットを支える暗号技術の根幹をなす、とてつもなく重要な数なのです。

ロマンがありますよね!

素数を求める数式は、実は様々なアプローチがあり、以下の記事でも紹介していますよ!

LET関数で、素数を華麗に抽出しよう!

では、B列の結果を使って、1から1000までに含まれる素数だけをリストアップしてみましょう。

これまでの記事では、数式を分かりやすくするために「名前の定義」を使ってきました。

今回は、それと似たようなことができる最新関数、LET関数を使ってみましょう!

D1セルに「素数」と入力し、D2セルに以下の数式を入力します。

=LET(a,FILTER(A2:B1001,B2:B1001=2),INDEX(a,SEQUENCE(ROWS(a)),1))

どうでしょう?スピル機能で、1から1000までの素数が一瞬で表示されました!

Excel説明画像

この数式で使っているLET関数、初めて見る方も多いかもしれませんね。

LET関数の使い方

LET関数は、数式の中で使う計算結果や値に「名前」をつけることができる関数です。

=LET(名前1, 値1, 計算式) のように使います。

例えば、=LET(x, 10, x*5) と書くと、まず「x」という名前に「10」を記憶させ、その「x」を使って「x*5」という計算をします。

Excel説明画像


結果は「50」になります。

同じ計算を何度も繰り返す複雑な数式を、スッキリと読みやすくしてくれる、非常に強力な関数なのです!

数式の解説

このLET関数の使い方を踏まえて、数式を分解してみましょう。

LET(a, FILTER(A2:B1001, B2:B1001=2), ...): まず、FILTER(A2:B1001, B2:B1001=2) の部分で、A列とB列のペアの中から、B列(約数の個数)が「2」であるものだけを絞り込みます。

Excel説明画像

この絞り込んだ結果(素数の連番と、2という約数の個数の2列の表)に、「a」という名前をつけています。

INDEX(a, SEQUENCE(ROWS(a)), 1): 次に、名前をつけた「a」を使って計算します。

ROWS(a)で絞り込んだ行数を取得し、SEQUENCEでその行数分の連番を生成します。

そして、INDEX関数が、「a」の表から、すべての行(SEQUENCE(...)の部分)の、1列目(素数の連番)だけを取り出しているのです。

Excel説明画像

面白い別解:約数が3つの数から素数を探す

ここで、少し頭の体操です。こんな方法でも素数を見つけることができます。

=LET(a,FILTER(A2:B1001,B2:B1001=3),INDEX(SQRT(a),SEQUENCE(ROWS(a)),1))

今度は、約数の個数が「3」のものを探していますね。そして、最後にSQRT関数(平方根を求める関数)を使っています。

実は、「約数が3個である数」は、必ず「素数の2乗」になるという面白い性質があるのです!

例えば、9(=3²)の約数は「1, 3, 9」の3個。25(=5²)の約数は「1, 5, 25」の3個です。

つまり、約数が3個の数を見つけ出し、その平方根を取れば、それもまた素数になる、というわけです。数学って面白いですよね!

Excel説明画像

ステップ4:最も約数の多い数 – 1000までのナンバーワンは誰だ?

さて、ここで素朴な疑問です。
1から1000までの数字の中で、一体どの数字が最も多くの約数を持っているのでしょうか?

これもExcelなら一瞬で答えがわかります。SORT関数で並べ替えてみましょう!

G1セルに「並べ替え」と入力し、G2セルに以下の数式を入力します。

=SORT(A2:B1001,2,-1)

SORT関数は、指定した範囲を並べ替える関数です。

  • 第1引数 A2:B1001: 並べ替えたい範囲
  • 第2引数 2: 何列目を基準に並べ替えるか(今回は2列目の「約数の個数」)
  • 第3引数 -1: どのように並べ替えるか(-1は降順、つまり大きい順)
Excel説明画像

結果は…なんと「840」が32個の約数を持ち、堂々の1位でした!

なぜ840はこんなに約数が多いのでしょうか?

それは、840が「2, 3, 5, 7」といった、小さい素数をたくさん因数に持っている(840 = 2³ × 3 × 5 × 7)ためです。

このような数を「高度合成数」と呼び、非常に割り切りやすい、キリのいい数として重宝されます。

例えば、1日は86400秒ですが、これも高度合成数で、様々な時間単位(60秒, 60分など)で割り切りやすくなっています。面白い発見ですよね!


ステップ5:約数の一覧を表示する – どんな数で割り切れる?

最後に、指定した数字の約数を、すべてリストアップする数式に挑戦しましょう。

J1セルに「数値入力」と入力し、J2セルに好きな数字を入れてみてください。ここでは「660」にしてみましょう。

K1セルに「約数を表示」と入力し、K2セルに以下の数式を入力します。

=LET(a,SEQUENCE(J2),FILTER(a,MOD(J2,a)=0))

どうでしょう?

J2セルに入力した「660」の約数が、ズラッと表示されました!

Excel説明画像

この数式も、LET関数を使っていて、とてもシンプルです。

LET(a, SEQUENCE(J2), ...): まず、SEQUENCE関数で1からJ2セル(660)までの連番を作り、それに「a」という名前をつけています。

FILTER(a, MOD(J2,a)=0): 次に、FILTER関数が、名前をつけた「a」(1から660までの連番)の中から、条件に合うものだけを絞り込んでいます。

その条件とは、MOD(J2,a)=0、つまり「660をaで割った余りが0になる」もの。これぞまさしく「約数」の定義そのものですね!

J2セルの値を「840」や、ご自身の好きな数字に変えて、結果がどう変わるか試してみてください!

まとめ:Excelは、数学の最高の遊び場だ!

約数」という一つのテーマから、「素数」の発見、そして「最も約数の多い数」の探求まで、Excelがいかに数学的な思考の遊び場として優れているか、感じていただけたのではないでしょうか。

難しいと思っていた数式も、分解してみれば、その一つひとつは「割り切れるかな?」「余りはいくつかな?」といった、シンプルな算数の組み合わせでできています。

今回の関数パズルが、皆さんのExcelへの興味をさらに深め、数字の世界の面白さを再発見するきっかけになれば、これほど嬉しいことはありません。

タイトルとURLをコピーしました