HP 12C: Prime
Factoring (by Don Shepard)
Introduction – Cash
Flow Registers to Simulate Indirect Addressing
This program uses what is called indirect addressing on the
HP 12C, which can be simulated by the use of the cash flow registers.
Cash flow registers can be registered by using the cash flow
[ g ] [PMT] (CFj) and frequency [ g ] [
FV ] (Nj) registers. Every time a cash
flow is stored, the counter is increased by 1.
The counter can be recalled by press [RCL] [ n ].
Similarly, you can recall the cash flows by the use of [RCL]
[ g ] [PMT] (CFj) and the attached frequencies by the use of [RCL] [ g ] [ FV ]
(Nj). Each time a cash flow is recalled,
the counter is decreased by 1.
Each cash flow can have a frequency up to 99 copies.
Fun fact: the first 20
cash flows can be stored into registers R0 through R19, with the 20th flow
stored in FV (future value). The cash
flow 0 is the initial cash flow, CF0 (accessed by [ g ] [ PV ] (CF0)).
This is kind of storing values in a list and recalling them whenever
necessary.
Program:
Enter the integer and press [ R/S ]. Keep pressing [ R/S ] to reveal more
factors. The factorization ends when a
zero appears.
(Remember if you
program using a HP 12C Platinum, step numbers are three digits instead of two.)
Step
|
Code
|
Key
|
01
|
44, 0
|
STO 0
|
02
|
42, 32
|
Clear Σ
|
03
|
2
|
2
|
04
|
44, 11
|
STO n
|
05
|
6
|
6
|
06
|
43, 14
|
[ g ] CFj
|
07
|
2
|
2
|
08
|
43, 15
|
[ g ] Nj
|
09
|
6
|
6
|
10
|
43, 14
|
[ g ] CFj
|
11
|
4
|
4
|
12
|
43, 15
|
[ g ] Nj
|
13
|
2
|
2
|
14
|
43, 14
|
[ g ] CFj
|
15
|
4
|
4
|
16
|
43, 15
|
[ g ] Nj
|
17
|
2
|
2
|
18
|
43, 14
|
[ g ] CFj
|
19
|
4
|
4
|
20
|
43, 15
|
[ g ] Nj
|
21
|
2
|
2
|
22
|
43, 14
|
[ g ] CFj
|
23
|
43, 15
|
[ g ] Nj
|
24
|
1
|
1
|
25
|
43, 14
|
[ g ] CFj
|
26
|
2
|
2
|
27
|
43, 15
|
[ g ] Nj
|
28
|
0
|
0
|
29
|
44, 12
|
STO i
|
30
|
45, 43, 15
|
RCL [ g ] Nj
|
31
|
43, 33, 56
|
GTO 56
|
32
|
1
|
1
|
33
|
44, 12
|
STO i
|
34
|
45, 43, 14
|
RCL [ g ] CFj
|
35
|
43, 33, 56
|
GTO 56
|
36
|
45, 11
|
RCL n
|
37
|
3
|
3
|
38
|
43, 34
|
x≤y
|
39
|
43, 33, 28
|
GTO 28
|
40
|
45, 0
|
RCL 0
|
41
|
43, 23
|
LN
|
42
|
43, 35
|
x=0
|
43
|
43, 33, 00
|
GTO 00
|
44
|
6
|
6
|
45
|
44, 11
|
STO n
|
46
|
45, 0
|
RCL 0
|
47
|
45, 1
|
RCL 1
|
48
|
36
|
ENTER
|
49
|
20
|
*
|
50
|
43, 34
|
x≤y
|
51
|
43, 33, 28
|
GTO 28
|
52
|
45, 0
|
RCL 0
|
53
|
31
|
R/S
|
54
|
0
|
0
|
55
|
43, 33, 00
|
GTO 00
|
56
|
44, 40, 1
|
STO+ 1
|
57
|
45, 0
|
RCL 0
|
58
|
45, 1
|
RCL 1
|
59
|
10
|
÷
|
60
|
43, 24
|
FRAC
|
61
|
43, 35
|
x=0
|
62
|
43, 33, 67
|
GTO 67
|
63
|
45, 12
|
RCL i
|
64
|
43, 35
|
x=0
|
65
|
43, 33, 32
|
GTO 32
|
66
|
43, 33, 36
|
GTO 36
|
67
|
45, 1
|
RCL 1
|
68
|
44, 10, 0
|
STO÷ 0
|
69
|
31
|
R/S
|
70
|
0
|
0
|
71
|
43, 33, 56
|
GTO 56
|
** Line 34 has been corrected. 10/3/2017
Example 1:
Factoring 148:
148 [R/S]
Display: 2, Press
[R/S]
Display: 2, Press
[R/S]
Display: 37, Press
[R/S]
Display: 0
Result: 148 = 2 * 2 *
37 = 2^2 * 37
Example 2:
Factoring 976:
976
Display: 2, Press
[R/S]
Display: 2, Press
[R/S]
Display: 2, Press
[R/S]
Display: 2, Press
[R/S]
Display: 61, Press
[R/S]
Display: 0, Press
[R/S]
Result: 976 = 2 * 2 *
2 * 2 * 61 = 2^4 * 61
Special thanks to Don Shephard for letting me post his
program on this blog. Shepard attended
HHC 2017, where he spoke about punch cards and their history.
Eddie
This blog is property
of Edward Shore, 2017.