手で計算したり証明する問題を、プログラムでやってみましょう。
pythonプログラムというよりは、電卓代わりにするぐらいの簡単なものです。
数の不思議、コンピュータやプログラムの便利さを体験する実習です。
よろしくー
▼事前に読んで欲しい記事▼
6と9だけで69を作る不思議な計算
6と9を簡単な演算すると、69になるのを確認しましょう。
6×9と6+9を計算して、合計してください。
やってみよー
今回は「()」は不要なんですが、計算の優先順位は、用心深く明確に書くのが良いです。
print((6*9)+(6+9))
69
手計算の解説は別サイト様にあります。
6と9を使って、
69を作ったってことー
1~9と9~1のような回文を作る計算
12345678987654321を掛け算で作ります。
1が9桁な数を掛け合わせてください。
やってみよー
print(111111111*111111111)
12345678987654321
手計算の解説は別サイト様にあります。
11×11や111×111を、筆算したときに、思い当たったことありますね。小さなことを突き詰めると大きな発見があるのかもって分かります。
自分で桁数を変えたらどうなるかも試してみましょう。1が10桁とか4桁とか。
じゃぁ12321を
作ってみよー
では、次の問題です。
12345654321になる掛け算を見つけてください。使える数字は1だけです。
もうわかったよねー
print(111111*111111)
12345654321
手計算の解説は別サイト様にあります。
10000×10000 VS 9999×10001 どっちが大きい?
この二つの計算をして、どちらが大きいかを教えてください。
手計算するのは大変なので、うまいこと数をまとめて証明するようですが、コンピュータで直接計算させましょう。手計算の解説は別サイト様にあります。
もうできるよねー
計算はできたと思うので、分かりやすく「差」も計算して上げましょう。
2つの計算結果を目視で見比べるのか、差を計算するプログラムに改良をするか、です。
a = 10000**2
b = 9999*10001
print(f"{a} {b} {a-b}")
100000000 99999999 1
桁が多いから
差がでてると分かりやすいねー
2の56乗 VS 5の24乗 どっちが大きい?
手計算だと、指数の演算規則や因数分解を使いますが、コンピュータで直接計算して比較しちゃいましょう。手計算の解説は別サイト様にあります。
print(f"{2**56} {5**24} {2**56 - 5**24}")
72057594037927936 59604644775390625 12452949262537311
指数の演算子「**」
さえ分かれば楽勝だねー
二連続の数を、素数で割ると…
以下の手順でプログラムを作ってください。
- 三桁の好きな数を作ってください
- それを二つつなげて、六桁にしてください
- 六桁になった数を、7と11と13で割ってください
わりとびっくりするー
a=123
a=a*1000+a
print(a)
print(a/7/11/13)
123123
123.0
変数aに代入する数
色々変えてみてねー
1~10の掛け算が、6週間の秒数と一致する!だからなんだw
以下の手順でプログラムを作ってください。
- 1~10の掛け算をしてください。
- その数を秒数として、何週間になるか計算してください。
下記のような学習効果が期待できます。
- for文によるプログラムが組めるか
- 総和(合計)はよくやります
- 秒数を分、時、日、週間に単位変換できるか
やってみよー
a=1
for i in range(1,11):
a = a*i
print(a)
print(a/(24*60*60)/7)
3628800
6.0
a = 1*2*3*4*5*6*7*8*9*10 って書いてもOKです。
「こうすれば楽」とか「こうすれば良い」みたいに考えすぎなくてOK。
「ああ、こうすれば楽なんだ」って自分で気づいていきましょう。
手計算の解説は別サイト様にあります。
時間の変換についての練習問題は、下記の記事で取り扱っています。
プログラム作ってると
変換ってよく使うんだよねー
x**3 + y**3 + z**3 = 42 を満たすx, y, z
手計算でやったら、大変というか無理な計算です。
「プログラムって再計算が楽だなぁ」「手計算だと大変だなぁ」と思えれば良いです。
以下のプログラムをコピーしてください。
# https://www.soranokillingtime.com/interesting_math_problems/x%c2%b3%ef%bc%8by%c2%b3%ef%bc%8bz%c2%b3%ef%bc%9d42/
x=-80538738812075974
y=80435758145817515
z=12602123297335631
print(x**3+y**3+z**3)
42
手計算の解説は別サイト様にあります。
注意深く写すのも大事-
方程式を満たすx, y, zを探し出すプログラムも作れます。詳しくは「python練習問題 | 連立方程式を力業で解く」でやります。
まとめ | 手計算が大変でもコンピュータでできる楽しさを知ってね!
今回は、for文は1つだけ使いましたが、基本的に電卓と同じ使い方でした。
プログラムのお勉強というよりは、
- 「妙な計算したら、妙な数の性質ってでてくるんだな」
- 「手計算は大変だけど、コンピュータで力業で計算することができる」
ということが、うっすらでも思えば良いなぁと考えています。
当ブログではまだまだPython課題を準備していますので、次の課題もやってみてくださいね。
じゃ またー