Python×インド式算数⑬10~100までの2乗計算全部クリアというお話





 ということで昨日終わってから思いついたんですけど、あれ、これってもしかして10~100までの2乗計算って全部クリアできるんじゃね? と思いついたので今回はそれを紹介しようと思います。

 ①まず重要なのは下が0の場合ですね。まあ10でも一緒なことなんですけど、下が0であれば10なら100だし20なら400、以降は900,1600、2500、3600、4900、6400、8100、10000となり簡単に計算できます。まあ九九の延長ですからね。
 ②次に重要なのは下が5の場合です。
 15なら1+1で2として左、5×5で25となり右なので225です。
 25なら2+1で3なので2×3で6、後は一緒で625。
 35なら3+1で4、3×4で12、なので1225ですね。あれなら30×40とした方がわかりやすいかもしれません。


 ③で、昨日やったのが下の桁が4もしくは6であってつまり5に近い場合ですね。
 26の2乗であれば(26+25)(26-25)+25の2乗とおける。
 つまり25の2乗は625ですけども、これに51足したのが26の2乗だろうなと。つまり676となります。
 34の2乗であれば(35+34)(35-34)+35の2乗ですよね。
 35の2乗である1225から―69してやったら34の2乗が出る。答えは1156となります。


 ④で、つまりこれを利用すればすべての数が出せるんじゃないかなと。
 37とかであれば+3してやれば40になりますよね。-2でもいいですけど。
 こういう考え方をしてやればすべての数を出せるんじゃないかという話ですね。
 なので
 (40+37)(40-37)+40の2乗としてやります。
 つまり
 1600に、77×(-3)=-231を足してやれば1369となりますが、このやり方でいけばすべて計算して答え出せるんじゃね? と思ったのでやってみたというのが今回の話ですね。
 で、結果は◎でした。
 0、5、10に近いように数値を分類してやって、123なら0へ、46なら5へ、789なら10へと組み込めるようにしてやればすべての2乗計算は答えを出すことができます。
 まあちょっと手間暇と時間がかかるっちゃかかりますが(笑)
 ということでいつものコードですね。

 
import random
num1 = random.randint(1,9)
num2 = random.randint(0,9)
hoge = 10*num1 +1*num2
hage = hoge**2
print("2乗の値を求める")
print(hoge,"の2乗を求める")
num3 = num2 -1
aa = 10*num1 +1*num3
num4 = num2 -2
bb = 10*num1 +1*num4
num5 = num2 -3
cc = 10*num1 +1*num5
num6 = num2 +1
dd = 10*num1 +1*num6
num7 = num2 +2
ee = 10*num1 +1*num7
num8 = num2 +3
ff = 10*num1 +1*num8
print('①因数分解の形へもっていき②そのまま計算してしまうわけだが')
print('一桁目が0~9までの場合分けをする')
if num2 ==0:
print(hage)

elif num2 ==1:
print(num2,'-1の数を計算すると',num3)
print("(",hoge,"+",aa,")","(",hoge,"-",aa,")","+",aa,"*",aa)
print("答えは",aa**2,'に',hoge+aa,"を足したものになる")
print('よって',hage)
elif num2 ==2:
print(num2,'-2の数を計算すると',num4)
print("(",hoge,"+",bb,")","(",hoge,"-",bb,")","+",bb,"*",bb)
print("答えは",bb**2,'に',hoge+bb*2,"を足したものになる")
print('よって',hage)
elif num2 ==3:
print(num2,'-3の数を計算すると',num5)
print("(",hoge,"+",cc,")","(",hoge,"-",cc,")","+",cc,"*",cc)
print("答えは",cc**2,'に',hoge+cc,"×3を足したものになる")
print('よって',hage)
elif num2 ==4:
print(num2,'+1の数を計算すると',num6)
print("(",hoge,"+",dd,")","(",hoge,"-",dd,")","+",dd,"*",dd)
print("答えは",dd**2,'に',"-",hoge+dd,"を足したものになる")
print('よって',hage)
elif num2 ==5:
print(num2,'これは瞬殺')
print(num1+1,'と',num1,"をかけて左、下の桁の2乗が右となるので")
print(hage)

elif num2 ==6:
print(num2,'-1の数を計算すると',num3)
print("(",hoge,"+",aa,")","(",hoge,"-",aa,")","+",aa,"*",aa)
print("答えは",aa**2,'に',hoge+aa,"を足したものになる")
print('よって',hage)
elif num2 ==7:
print(num2,'+3の数を計算すると',num8)
print("(",hoge,"+",ff,")","(",hoge,"-",ff,")","+",ff,"*",ff)
print("答えは",ff**2,'に',"-",(hoge+ff)*3,"を足したものになる")
print('よって',hage)
elif num2 ==8:
print(num2,'+2の数を計算すると',num7)
print("(",hoge,"+",ee,")","(",hoge,"-",ee,")","+",ee,"*",ee)
print("答えは",ee**2,'に',"-",(hoge+ee)*2,"を足したものになる")
print('よって',hage)
else:
print(num2,'+1の数を計算すると',num6)
print("(",hoge,"+",dd,")","(",hoge,"-",dd,")","+",dd,"*",dd)
print("答えは",dd**2,'に',"-",(hoge+dd)*2,"を足したものになる")
print('よって',hage)

print(hage)
print('答えは?')
















この記事へのコメント

にほんブログ村 ゲームブログ ゲーム評論・レビューへ
にほんブログ村