刚才敲得,先放这,学数学的也许知道这段程序是穷举Kaprekar Number的,呵呵.
def check(a,b,c,d):
n = a*1000 + b * 100 + c * 10 + d - (d*1000+c*100+b*10+a)
i = 0
oldresult = 0
while True:
i = i + 1
s = [(n%1000%100%10),(n/10%100%10),(n/100%10),n/1000]
s.sort()
n = s[0] + s[1]*10 + s[2]*100+s[3]*1000
r = s[3] + s[2]*10 + s[1]*100+s[0]*1000
nn = n - r
if nn == oldresult:
#print "the result for ",a,b,c,d,"is ",nn
break
elif i > 9999:
print a,b,c,d,"failed"
break
n = nn
oldresult = nn
for a in range(10):
for b in range(10):
for c in range(10):
for d in range(10):
if a == b and b == c and c == d:
continue
elif a < b or b < c or c < d:
continue
else:
check(a,b,c,d)
print "Done"
