Skip to content

Instantly share code, notes, and snippets.

@achautha
Last active October 31, 2019 12:25
Show Gist options
  • Save achautha/b464608ce2d2efd46012a185b093f958 to your computer and use it in GitHub Desktop.
Save achautha/b464608ce2d2efd46012a185b093f958 to your computer and use it in GitHub Desktop.
Kaprekar Constant
#!/usr/bin/python
import sys
def kaprekar_diff(n):
nlist = list(str(n))
if n < 1000:
if len(nlist) == 1:
nlist = nlist + list('000')
elif len(nlist) == 2:
nlist = nlist + list('00')
elif len(nlist) == 3:
nlist = nlist + list('0')
maxn = int(''.join(sorted(nlist, reverse=True)))
minn = int(''.join(sorted(nlist)))
return maxn - minn
def find_kaprekar(n1):
kpass = 1
while kpass <= 7:
n1 = kaprekar_diff(n1)
if n1 == 6174:
break
else:
kpass += 1
return kpass
# main
start,end = 1000,10000
kaprekar_map = {}
for n in xrange(start,end):
if n not in [1111,2222,3333,4444,5555,6666,7777,8888,9999]:
kpass_out = find_kaprekar(n)
print 'n=' + str(n) + ' pass=' + str(kpass_out)
if kpass_out > 7:
continue
if kpass_out in kaprekar_map:
kaprekar_map[kpass_out].append(n)
else:
kaprekar_map[kpass_out] = []
kaprekar_map[kpass_out].append(n)
print '** Kaprekar number analysis ' + str(start) + '-' + str(end-1) + ' **'
for key in kaprekar_map.keys():
print 'Bucket:' + str(key) + ', Numbers which require ' + str(key)+ ' iterations=>'+ str(len(kaprekar_map[key]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment