Skip to content

How many times to Kaprekar’s constant using Python


6174 is known as Kaprekar’s constant after the Indian mathematician D. R. Kaprekar. This number is notable for the following rule:

  1. Take any four-digit number, using at least two different digits (leading zeros are allowed).
  2. Arrange the digits in descending and then in ascending order to get two four-digit numbers, adding leading zeros if necessary.
  3. Subtract the smaller number from the bigger number.
  4. Go back to step 2 and repeat.

The above process, known as Kaprekar’s routine, will always reach its fixed point, 6174, in at most 7 iterations. Once 6174 is reached, the process will continue yielding 7641 – 1467 = 6174. For example, choose 3524:5432 – 2345 = 30878730 – 0378 = 83528532 – 2358 = 61747641 – 1467 = 6174

The only four-digit numbers for which Kaprekar’s routine does not reach 6174 are repdigits such as 1111, which give the result 0000 after a single iteration. All other four-digit numbers eventually reach 6174 if leading zeros are used to keep the number of digits at 4.

Finding the number of times using Python

To learn how to sort an integer in python, check out this tutorial on how to sort an integer.

# Taken from def sort_asc(n): return int("".join(sorted([i for i in str(n)]))) # Taken from def sort_desc(n): return int("".join(sorted([i for i in str(n)], reverse=True))) def kaprekar_times(n): # count how many times count = # set the last answer to compare against last = n # loop forever while True: # get the smallest and biggest smaller = sort_asc(last) bigger = sort_desc(last) # get the answer answer = bigger-smaller # increment count += 1 # return the count if it's a match if answer==last: return count else: # otherwise continue last = answer # return if all else fails return count # Some test cases print(kaprekar_times(9272)) # 6 print(kaprekar_times(1263)) # 8 print(kaprekar_times(9820)) # 8 print(kaprekar_times(2489)) # 4
Code language: Python (python)

See also  Find the Maximum Length Difference between Lists/Arrays in Python
Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x