はい
またまた 数字のトリビアをPythonで検証してみました。

解説動画はこちら




最初のトリビアは
数字のトリビア.007

割るときれいな数字がでる組み合わせです。

コードは
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のデフォルトでは桁数がそんなに多く出せ無いので
こんな感じになってしまいます。


次は
数字のトリビア.008

またまた割り算のトリビアですが
これはデフォルトでは桁が足り無いので
正確な小数点の計算をするためのライブラリを用います。

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までは並んだのに

というかこれを発見した人
絶対ヒマ人でしょ

こんな計算
いつやるの?


・・
・・・

ひまでしょ!!

はい。

お次は
数字のトリビア.009

なんか良くわかりませんが上記の操作をすると
必ず同じ数字に戻るんだそうです。
なんか不思議ですね
for i in range(100,1000):
    a2 = int(str(i)*2)
    a3 = a2//7
    a4 = a3//11
    a5 = a4//13
    print(i,a5)



トリは
数字のトリビア.010

ゾロ目以外の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になるようですね。
一部は再帰が終わらずエラーになってしまいました。


このように
最大に並べ替えたものから最小に並べ替えたものを引いた答えが
元と同じになるような数をカプレカ数と言うのだそうで。

なかなか面白い数字ですね。

また次回もお楽しみに!!