黑洞数是指这样的整数:
由这个数字每位数字组成的最大数减去每位数字组成的最小数仍然得到这个数自身。例如3位黑洞数是495,因为954-459=495,4位数字是6174,因为7641-1467=6174。
# -*- coding:utf-8 -*-
def max(n): #每位数字组成的最大数
a = [] #创建新的列表存储该数的各位数上的数字
while n / 1 != 0:
if n % 10 == 0: #若个位数是0则将0存入a[]内
k = 0
else:
k = n % 10
n /= 10
a.append(k)
a.sort(reverse=1) #把列表内元素按大小逆向排序
c = [str(i) for i in a] #把列表内元素转字符串
d = ''.join(c) #逐个加到d字符串内
e = int(d) #转int型
return e #返回e,此时是n各位数组成的最大数
def min(n): #每位数字组成的最小数
b = []
while n / 1 != 0:
if n % 10 == 0:
k = 0
else:
k = n % 10
n /= 10
b.append(k)
b.sort()
c = [str(i) for i in b]
d = ''.join(c)
e = int(d)
return e
x = input('x:') #输入位数x,如:3,则求3位数中的黑洞数
a = set()
for y in range(10**(x-1),10**x):
z = max(y) - min(y)
if z == y:
a.add(z)
if len(a) != 0:
for i in a:
print x,'位数的黑洞数:',i
else:
print x,'位数中没有黑洞数'
控制台输出
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/untitled/0830/hm4.py
x:3
3 位数的黑洞数: 495
Process finished with exit code 0
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/untitled/0830/hm4.py
x:6
6 位数的黑洞数: 549945
6 位数的黑洞数: 631764
Process finished with exit code 0
……
不过,所求位数越大,程序运行的时间越长