Python×インド式算数⑲9で割る割り算






 ということで割り算ですが。
 152÷9がいくらになるかということですが、16余り8ですね。
 これは普通に割り算するなり電卓なりで求められるわけですが。

 この152を分析すると1、5、2という三つの数字があります。
 ①先頭の数字が1
 ②1+5=6
 ③1+5+2=8
 とそれぞれ先頭から足していくと数値が出ますが。
 この1と6が割り算の答え(商といいます)である16であり、8がその余りだと。


 なんかどっかの本に「ヒトラーという言葉を分解すると666になる」とありましたけどそのくらい胡散臭いですね(笑)

 ・その他の例も見てみましょう。
 321/9ですが。
 先頭から3、5、6と出ます。
 じゃあ商が35余り6なのかって話ですね。
 正解です(笑)


 ・246/9ですが。
 2、6、12ですよね。
 商が26、余り12ってのはどう考えてもおかしい。
 だって9で割ってるのに余りが12なんだから。
 そこで27、余り3としてみるとこれ正解になります。


 このケースが多々あって、プログラミングしてみてもいろいろ悩ませてくれるヤツだったんですが再計算をするようにしたらクリアできましたね。

 とにかく9で割るなら足し算でも求められると。
 で、時々余りが変なやつが出るので、その場合は再計算して修正してやりましょうということですね。


 ということでこのコードを最後に貼りたいと思います。
 二つ作りました。
 ⑴強制再計算と⑵必要のある時だけ再計算ですね。
 まあ結局一緒なんですが(笑)、使いたい方を使えたら気持ちいいなと思いましたので作ってみました。
 機械的にとりあえず答えが出ても信じることなくまあとりあえず再計算してみようぜというのと、あーこれは9で割れないからもう再計算する必要がないよと表示してくれるコード。
 どっちがいいか……っていったら結構微妙なとこですね(笑)


 ⑴強制再計算コード
 
import random
num1 = random.randint(1,1)
num2 = random.randint(1,9)
num3 = random.randint(1,9)
num4 = 9
hoge =100*num1+10*num2+1*num3
hage =int(hoge/9)
print(hoge,"商",hage)
print('これを9で割ると、')
aa = num1
bb = num1 + num2
cc = num1 + num2 + num3
dd = 10*aa+1*bb
print(aa,bb,cc,'商',dd,"余り",cc)
print("再計算すると、")
ee = int(cc/9)
ff = int(cc%9)
print(dd+ee)
print(ff)


 ⑵必要のある時だけ再計算
import random
num1 = random.randint(1,1)
num2 = random.randint(1,9)
num3 = random.randint(1,9)
num4 = 9
hoge =100*num1+10*num2+1*num3
hage =int(hoge/9)
print(hoge,"商",hage)
print('これを9で割ると、')
aa = num1
bb = num1 + num2
cc = num1 + num2 + num3
dd = 10*aa+1*bb
ee = int(cc/9)
ff = int(cc%9)
print(aa,bb,cc,'商',dd,"余り",cc)
if cc>9:
  print("まだ計算できるので再計算する")
  print(dd+ee)
  print(ff)
else:
  print("再計算の必要なし")



この記事へのコメント


パソコンランキング