はい
またまた 数字のトリビアをPythonで検証してみました。
解説動画はこちら
最初のトリビアは
割るときれいな数字がでる組み合わせです。
コードは
print(1/81) print(1/891) print(1/8991) print(1/89991) print(1/8181) print(1/818181)
0.012345679012345678
0.001122334455667789
0.00011122233344455567
1.1112222333344445e-05
0.0001222344456667889
1.2222234444456666e-06
以外ときれいに並びますねー
Pythonのデフォルトでは桁数がそんなに多く出せ無いので
こんな感じになってしまいます。
次は
またまた割り算のトリビアですが
これはデフォルトでは桁が足り無いので
正確な小数点の計算をするためのライブラリを用います。
decimal
コードは
import decimal decimal.getcontext().prec = 1000 a = decimal.Decimal(10000) b = decimal.Decimal(9801) print(a / b)結果は・・・
1.02030405060708091011121314151617181920
2122232425262728293031323334353637383940
4142434445464748495051525354555657585960
6162636465666768697071727374757677787980
818283848586878889909192939495969799000
・・・
1から一つづつ数字が増えていく結果になります。
おしい
97までは並んだのに
というかこれを発見した人
絶対ヒマ人でしょ
こんな計算
いつやるの?
・・
・・・
ひまでしょ!!
はい。
お次は
なんか良くわかりませんが上記の操作をすると
必ず同じ数字に戻るんだそうです。
なんか不思議ですね
for i in range(100,1000): a2 = int(str(i)*2) a3 = a2//7 a4 = a3//11 a5 = a4//13 print(i,a5)
トリは
ゾロ目以外の4桁の数字で
数字を大きい順に並び替えたものから
数字を小さい順に並び替えたものを引く。
それをまた同じ操作をしていくと・・・
6174になるんだそう。
検証したコードはこちらに。
まずは上記の操作をする関数kapを作ります。
6174になるまで再帰します。
def kap(i): ma = sorted([a for a in str(i)],reverse=True) mi = sorted([a for a in str(i)]) m = int(''.join(ma)) - int(''.join(mi)) if m ==6174: return m else: return kap(m)
for i in range(1000,10000): if str(i)[0]==str(i)[1]==str(i)[2]==str(i)[3]: continue else: try: m = kap(i) print(i,m) except: print(i,'X')
あとはゾロ目は除いて
4桁の数字を検証。
だいたいは
6174になるようですね。
一部は再帰が終わらずエラーになってしまいました。
このように
最大に並べ替えたものから最小に並べ替えたものを引いた答えが
元と同じになるような数をカプレカ数と言うのだそうで。
なかなか面白い数字ですね。
また次回もお楽しみに!!