Kaprekar

# Kaprekar Series for the HP-41

Overview

-Take for example a 3-digit number, say  N0 = 286
-Sort the digits in increasing order:  268  and in decreasing order:  862
-Calculate the difference  862 - 268 = 594 = N1

-Repeat this operation:  954 - 459 = 495 = N2
-Again:  954 - 459 = 495 = N3

-The Kaprekar series in this example is  286 , 594 , 495 , 495 , .....
-So we end up in a 1-number cycle:  { 495 }

-The following programs allows to find such cycles.

Program Listing

Data Registers:           •  R00 = n = number of digits  ( 1 <= n <= 10 )                       ( Register R00 is to be initialized before executing "KAPR"  )

R01 thru R10 = digits of the numbers    R11 & R12: temp

-  R13  R14  R15  .....................  =  N0  N1  N2  .............................
Flags: /
Subroutine:   "SORT"  ( cf "Sorting Numbers for the HP-41" )

-Line 27 may be replaced by an M-code routine SORT
-If you don't have an HP-41CX,
replace line 56 by  RCL 11, line 52 by  DSE 11, line 50 by  CLX   RCL IND 11   X=Y? , line 48 by  STO 11, line 08 by  RCL Z and delete line 05

 01  LBL "KAPR" 02  VIEW X 03  12.012 04  STO 12 05  X<>Y 06  LBL 01 07  RCL 00 08  X<>Y 09  ISG 12 10  CLX 11  STO IND 12 12  LBL 02 13  RCL X 14  10 15  MOD 16  STO IND Z  17  - 18  10 19  / 20  DSE Y 21  GTO 02 22  RCL 00 23  STO 11 24   E3 25  / 26  ISG X 27  XEQ "SORT" 28  SIGN 29  0 30  ENTER^ 31  LBL 03 32  10 33  ST* Z 34  * 35  RCL IND Z 36  + 37  X<>Y 38  RCL IND 11 39  + 40  X<>Y 41  ISG Z 42  CLX 43  DSE 11 44  GTO 03        45  - 46  VIEW X 47  RCL 12 48  X<>Y 49  LBL 04 50  X=NN?   51  GTO 05   52  DSE Y 53  GTO 04  54  GTO 01    55  LBL 05    56  X<>Y 57  INT 58  RCL 12         59  INT 60   E3 61  / 62  + 63  CLD 64  END

( 108 bytes / SIZE ? )

 STACK INPUT OUTPUT X N0 bbb.eee

where  bbb.eee  is the control number of the cycle

Example1:     n = 6  &   N0 = 918682

6       STO 00
918682  XEQ "KAPR"  >>>>  the HP-41 displays  N0 ,  N1 ,  N2 , ...... and finally returns  24.030   ( in 4mn02s )

-So we eventually end up in a 7-number cycle in registers  R24 , ..... , R30  namely:

{ 851742 , 750843 , 840852 , 860832 , 862632 , 642654 , 420876 }

Example2:     n = 5  &   N0 = 4    which will be read  "00004"  since  n = 5

5   STO 00
4     R/S        >>>>   15.018   ( in 61 seconds )

-The 4-number cycle is in registers  R15 thru R18:

{ 62964 , 71973 , 83952 , 74943 }