【題目描述】1955年,卡普耶卡(D.R.Kaprekar)對4位數字進行了研究,發現一個規律:對任意各位數字不相同的4位數,使用各位數字能組成的最大數減去能組成的最小數,對得到的差重複這個操作,最終會得到6174這個數字,並且這個操作最多不會超過7次。請編寫程式驗證這個猜想。
【練習要求】請給出原始碼程式和執行測試結果,原始碼程式要求新增必要的註釋。
【輸入格式】在一行中輸入一個任意各位數字不相同的4位數。
【輸出格式】驗證6174猜想,輸出過程中計算得到的各數,資料間以空格為間隔。
【輸入樣例】2694
【輸出樣例】2694 7173 6354 3087 8352 6174
def kaprekar_process(num):
# 迴圈直到得到6174
while num != 6174:
# 將數字轉換為字串,方便進行操作
num_str = str(num)
# 將數字字串補齊到4位,不足的高位用'0'填充
while len(num_str) < 4:
num_str = '0' + num_str
# 將數字字串按照非遞減順序排序得到最小數和最大數
min_num = int(''.join(sorted(num_str)))
max_num = int(''.join(sorted(num_str, reverse=True)))
# 計算差值並更新num
num = max_num - min_num
# 輸出當前數
print(num, end=' ')
# 輸入一個任意各位數字不相同的4位數
num = int(input("Enter a 4-digit number with distinct digits: "))
# 驗證6174猜想並輸出過程中計算得到的各數
print(num, end=' ')
kaprekar_process(num)