30 lines
873 B
Python
30 lines
873 B
Python
def encode(n, base):
|
|
result = ""
|
|
while n:
|
|
n, d = divmod(n, base)
|
|
if d < 10:
|
|
result += str(d)
|
|
else:
|
|
result += chr(d - 10 + ord("a"))
|
|
return result[::-1]
|
|
def Kaprekar(n, base):
|
|
if n == '1':
|
|
return True
|
|
sq = encode((int(n, base)**2), base)
|
|
for i in range(1,len(sq)):
|
|
if (int(sq[:i], base) + int(sq[i:], base) == int(n, base)) and (int(sq[:i], base) > 0) and (int(sq[i:], base)>0):
|
|
return True
|
|
return False
|
|
def Find(m, n, base):
|
|
return [encode(i, base) for i in range(m,n+1) if Kaprekar(encode(i, base), base)]
|
|
|
|
m = int(raw_input('Where to start?\n'))
|
|
n = int(raw_input('Where to stop?\n'))
|
|
base = int(raw_input('Enter base:'))
|
|
KNumbers = Find(m, n, base)
|
|
for i in KNumbers:
|
|
print i
|
|
print 'The number of Kaprekar Numbers found are',
|
|
print len(KNumbers)
|
|
raw_input()
|