![見出し画像](https://assets.st-note.com/production/uploads/images/62510580/rectangle_large_type_2_3d1b2fa0aabcf601f12c78df6a8def01.png?width=1200)
Pythonでカプレカ数を計算する
Pythonで整数に関する取扱いの記事を作成しました。
カプレカ数は、3桁の整数を考える場合、次のような不思議なことがおこります。
1. 3桁の整数を、大きい順番に並べ替えた数から小さい順に並べ替えた数を引き算します。
例:381→831-138=693
2. 1.の計算を繰り返します。
例:693→963-369=594→954-459=495
3. 元の数が555のように3つとも同じでなければ、6回以内の計算で495に落ち着きます。この495のような数字を3桁の整数のカプレカ数といいます。なお、3桁とも同じ場合は計算結果は0になります。
なお、カプレカ数は3桁以外の整数についても存在します。
Pythonでは次の通り計算します。
カプレカ数の計算で最大値から最小値の差を計算する関数
def differ(num):
min=sorted(str(num).rjust(3,'0'))
max=sorted(str(num).rjust(3,'0'), reverse=True)
return int(''.join(max))-int(''.join(min))
print(differ(381))
print(differ(693))
print(differ(594))
#381
#693
#594こ
この関数を使ってカプレカ数を計算します。すべては表示できませんが0か495に収束することが分かります。
for i in range(100,1000):
Kaprekar=i
cnt=0
while Kaprekar!= 495 and Kaprekar!= 0:
cnt+=1
Kaprekar=differ(Kaprekar)
print(i,Kaprekar,cnt)
#100 495 6
#101 495 6
#102 495 5
#103 495 4
(以下略)