【小学校算数 × プログラミング】Pythonで「おみやげ算」の手順を理解しよう!

算数・数学の学習において、計算を効率的に行うための手法の修得は非常に重要です。効率的な計算方法を習得することで、暗算スキルが向上し、さらなる学習の進展や理解に欠かせない要素となります。

計算に時間をかけずに素早く正確な結果を得ることで、問題解決能力や論理的思考力が向上し、数学的な概念や関係性をより深く理解することが期待できます。

おみやげ算はその一つであり、十の位が同じ二桁の数どうしの掛け算を素早く解く方法です。本記事では、おみやげ算の理解を深めるために計算手順の簡単なプログラミングを紹介します。

おみやげ算とは

おみやげ算は、二桁の数の掛け算を効率的に計算する方法です。具体的には、十の位が同じ二桁の数どうしの掛け算を瞬時に解くことができます。おみやげ算の手法を使うことで、計算のスピードと正確性が向上し、暗算にも役立てることができます。

おみやげ算の計算手順

おみやげ算の計算手順は以下の通りです。

例として、「16×17」をおみやげ算で計算してみます。

Step 1:「16×17」の右の数の一の位の数「7」をおみやげとして左の数「16」に渡します。

Step 2:おみやげの受け渡しにより、元の式「16×17」は「23×10」になります。

Step 3:「23×10」を計算します。「230」が得られます。

Step 4:元の式の左右の数の一の位同士「6」「7」を掛け合わせます。「42」が得られます。

Step 5:Step 3と4で得られた「230」と「42」を足します。「272」が得られ、これが答えです。

 

この手順に従うことで、おみやげ算を使うと、11×12、18×15、14×19などの「十の位が1の2ケタの数どうしのかけ算」を簡単に計算することができます。また、十の位が同じ2ケタの数どうしのかけ算にもおみやげ算は適用できます。

おみやげ算を練習するアプリをFlask(PythonのWebアプリケーションフレームワーク)で作ってみましたのでお試しください。「簡単に計算できる」とはいっても、暗算で解くのはやはり難しいので、最初のうちは計算過程のメモを取りながら取り組み、徐々に暗算に慣れていけばよいかと思います。

おみやげ算の練習アプリ

シンプルなアプリですが、この仕組みを動作させるだけで、HTMLをはじめFlaskやPython、Javascriptなど盛りだくさんの構成になっています。ここではプログラムの詳細を説明しきれないので、別の機会に改めて紹介したいと思います。

なぜおみやげ算が成り立つのか?

おみやげ算の計算手順を示しましたが、なぜこのような計算が成り立つのでしょうか。その証明には式の展開などを利用した少し難しい説明になりますが紹介しておきます。

  1. 一桁の整数「x」「y」「z」があるとき、十の位が同じ二桁の2つの数は、「10x+y」「10x+z」と表すことができます。
  2. この2つの数の積(掛け算)は、「(10x+y)(10x+z)」と表すことができます。
  3. この式を展開すると、「100x2+10xz+10xy+yz」と表すことができます。
  4. 一方、「(10x+y)(10x+z)」をおみやげ算の手順で解くことを考えます。
  5. 右の数の一の位の数「y」をおみやげとして左の数に渡すので、「(10x+y+z)10x」と表すことができます。
  6. この式を展開すると「100x2+10xy+10xz」と表すことができます。
  7. この式に元の式の左右の数の一の位同士「y」「z」を掛け合わせた数を足すと「100x2+10xy+10xz+yz」と表すことができます。
  8. ③で表される式と⑦で表される式が同じ式になったので、十の位が同じ二桁の2つ数の掛け算がおみやげ算によって計算できることが証明できました。

Pythonを使ったプログラム

以下に、Pythonでおみやげ算を計算するためのプログラム例を示します。

# おみやげ算の手順のサンプルコード
import random

#十の位が同じ二桁の2つ数を取得
num1_ones = random.randint(1, 9)    #左(1つ目)の数の一の位
num1_tens = random.randint(1, 9)    #左(1つ目)の数の十の位
num1 = num1_tens * 10 + num1_ones   #左(1つ目)の数
num2_ones = random.randint(1, 9)    #右(2つ目)の数の一の位
num2 = num1_tens * 10 + num2_ones   #右(2つ目)の数

#右の数の一の位をおみやげとして左の数に渡す
num1_get = num1 + num2_ones
num2_put = num2 - num2_ones

#おみやげ授受後の式の掛け算・・・(1)
num_omiyage = num1_get * num2_put

#元の式の左右の数の一の位同士の掛け算・・・(2)
num_ones_multi = num1_ones * num2_ones

#(1)と(2)の足し算
result = num_omiyage + num_ones_multi

#結果の表示
print("計算式 = ",num1," × ",num2)
print("おみやげ算 = ",num1_get," × ",num2_put," + ",num1_ones," × ",num2_ones)

このプログラムは、特に難しいことはしていません。2つの数字をランダムに取得し、おみやげ算の手順に従って足し算や掛け算を行っています。

以下は「Google Colab」でプログラムを実行した結果です。

まとめ

おみやげ算は、十の位が同じ数の二桁の数どうしの掛け算を効率的に解く方法です。手順を覚えておくことで、計算を素早く行うことができます。

おみやげ算の修得は、計算力の向上だけでなく、数学全体の学習においても大きな助けになります。また、計算手順のプログラミングを行うことで、思考が整理され、さらに理解が深まると思います。ぜひご自身でプログラミングに挑戦してみてください。

【Pythonの入門におすすめの書籍3選】