zoukankan      html  css  js  c++  java
  • python3求四位磁力数

     

    任意给一个数字不全相同的n位数,经有限次“重排求差”操作(“重排求差”操作即把该数的数字重排后得到的最大数减去重排后得到的最小数)最终的运算结果总会得到同一或同一些n位整数,这类整数好像所有n位整数的核心一样,具有很强的磁性,能够吸引其它n位整数,故这类整数为磁力数。

     1 def split (n, numberlist):
     2     numberlist.clear()
     3     while (n > 0):
     4         mod = n % 10
     5         n = int( n / 10 )
     6         numberlist.append(mod)
     7 
     8 def bubbleSort (numlist, len):
     9     for i in range(len):
    10         for j in range(len-i-1):
    11             if numlist[j] < numlist[j+1]:
    12                 tmp = numlist[j]
    13                 numlist[j] = numlist[j+1]
    14                 numlist[j+1] = tmp
    15 
    16 def reverse(a, k):
    17     for i in range(int(k/2)):
    18         t = a[i]
    19         a[i] = a[k-1-i]
    20         a[k-1-i] = t
    21 
    22 def combine(a, k):
    23     m = a[3] + a[2] * 10 + a[1] * 100 + a[0] * 1000
    24     return m
    25 
    26 inputStr = input('输入一个数字完全不相同的四位数字(1000·9999)')
    27 length = len(inputStr)
    28 if length != 4:
    29     print("input number is invalid")
    30     exit()
    31 inputNumber = eval(inputStr)
    32 tarNumber = 6174
    33 numberlist = []
    34 while(inputNumber != tarNumber):
    35     split(inputNumber, numberlist)
    36     bubbleSort(numberlist, length)
    37     maxNum = combine(numberlist, length)
    38     reverse(numberlist, length)
    39     minNum = combine(numberlist, length)
    40     inputNumber = maxNum - minNum
    41     print('%d-%d=%d/n' % (maxNum, minNum, inputNumber))

    使用python中列表中的sort()和reverse()函数来替换掉上述程序中的冒泡排序和逆转列表中的bubbleSort (numlist, len)和reverse(a, k)。

     1 def split (n, numberlist):
     2     numberlist.clear()
     3     while (n > 0):
     4         mod = n % 10
     5         n = int( n / 10 )
     6         numberlist.append(mod)
     7 
     8 def combine(a, k):
     9     m = a[3] + a[2] * 10 + a[1] * 100 + a[0] * 1000
    10     return m
    11 
    12 inputStr = input('输入一个数字完全不相同的四位数字(1000·9999)')
    13 length = len(inputStr)
    14 if length != 4:
    15     print("input number is invalid")
    16     exit()
    17 inputNumber = eval(inputStr)
    18 tarNumber = 6174
    19 numberlist = []
    20 while(inputNumber != tarNumber):
    21     split(inputNumber, numberlist)
    22     numberlist.sort(reverse = True)
    23     maxNum = combine(numberlist, length)
    24     numberlist.reverse()
    25     minNum = combine(numberlist, length)
    26     inputNumber = maxNum - minNum
    27     print('%d-%d=%d/n' % (maxNum, minNum, inputNumber))
  • 相关阅读:
    Nginx开发从入门到精通
    Nginx配置文件(nginx.conf)配置详解
    转贝叶斯推断及其互联网应用(一):定理简介
    Vim 使用入门快捷键
    从贝叶斯定理说开去
    转特征值和特征向量
    第四章 特征值与特征向量
    numpy基础入门
    python range函数与numpy arange函数
    转悠望南山 Python闲谈(二)聊聊最小二乘法以及leastsq函数
  • 原文地址:https://www.cnblogs.com/wxlblogs/p/7130342.html
Copyright © 2011-2022 走看看