python驗證卡普耶卡(D.R.Kaprekar)6174猜想


1955年,卡普耶卡(D.R.Kaprekar)4位數字進行了研究,發現一個規律:

對任意各位數字不相同的4位數,使用各位數字能組成的最大數減去能組成的最小數,對得到的差重復這個操作,最終會得到6174這個數字,並且這個操作最多不會超過7

以下為python代碼驗證

a = input()
a = int(a)
i = 0
l = []
cha = 0

b = a%1000                                 #求出百十個位
max4 = (a - b)/1000                    #求出千位
d = b%100                                  #求出十個位
max3 = (b - d)/100                     #求出百位
max1 = d%10                            #求出個位
max2 = (d - max1)/10                #求出十位
l.append(max4)
l.append(max3)
l.append(max2)
l.append(max1)
l.sort()
max1 = int(l[0])                          #最小值
max2 = int(l[1])
max3 = int(l[2])
max4 = int(l[3])                          #最大值

while cha != 6174 :
    i = i + 1
    summax = max4 * 1000 + max3 * 100 + max2 * 10 + max1
    summin = max1 * 1000 + max2 * 100 + max3 * 10 + max4
    cha = summax - summin
    baishige = cha%1000                                                             #求出百十個位
    max4 = (cha - baishige)/1000                                                 #求出千位
    shige = baishige%100                                                            #求出十個位
    max3 = (baishige - shige)/100                                                #求出百位
    max1 = shige%10                                                                   #求出個位
    max2 = (shige - max1)/10                                                      #求出十位

    l = []                                                                                        #這個地方要把列表清零,當時沒注意,在這調試了很長時間                                  
    l.append(max4)
    l.append(max3)
    l.append(max2)
    l.append(max1)
    l.sort()
    max1 = int(l[0])            #最小值
    max2 = int(l[1])
    max3 = int(l[2])
    max4 = int(l[3])            #最大值
    print(cha)    
    print(i)

 

 

截圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM