hp41programs

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 }