これは235以下の整数を素因数に分解するプログラムで, demonstration
用としても適している.
使用法
本テープ(R0で読むものとinitial loadで入れるものと両方用意されている)を読み込み,
テープが停止したら, 分解しようと思う数 N を
N+
の形に普通に穿孔して入れる. すると直ちに計算がはじまり
N.=n1.n2.n3.…
nl.
の形に結果が印刷される.
(最後に1. という無意味な因子がつく場合とつかない場合とある).
大きい素因子が含まれる場合は, 10分程度までかかることがある.
方法
N を2, 3, 5, 7, からはじめて次々の素数または素数であるかもしれない数で割ってみる.
素数であるかもしれない数とは, 2, 3, 5, 7のどれでも割れない数のことで,
そのような数はmod 210(210 = 2・3・5・7)で循環するから,
そのような数の, 次々のものの間の差を表にしておき, それに従って次々の除数を求める.
N が n1で割れたならば, N/n1を
新しい N だと思って同じ操作を,
n1を最初の試しの除数として繰り返す.
こうして N1/n2=N2,
N2/n3=N3,…
として, どこかで
Nl/nl+1 <
nl+1
(但し nlは試しの除数)
となったら終りにして nl=Nlとする.
プログラム
0p=116, 0k=162, 0c=166, 0m=168, 0a=256, 0w=2k, 32:212980m,
0p: P1を変更したもの(31番地 r2r → r1r)
0m:p 33 ┐
1 tllt │
2 tllt │ CR, LF
3 l 2 │
4 tllt ┘
5 pl o ┐ 0oL番地に組立てられている
6 tl k ┘ Nを0kL番地にうつす
7 it ┐ N. を印刷
8 jl p ┘
9 n 7 ┐
10 r 1 │ = を印刷
11 tllt ┘
0t:p 2 ┐ 除数を入れる0wLをclear
1 tl w ┘
2 p c 表の頭をセット
3 jl 13r
4 a 1w ┐ 次の除数をつくる
5 t 1w ┘
6 ql k ┐
7 p 2 │ 割算実行
8 dl w ┘
9 q1 w ┐ 割り切れたら22へ
10 zl 22r ┘
11 p 14r ┐
12 a 49 │ 表の次の行へ進む
13 x 14r ┘
14 p ( ) 表を引く
15 kl 4r 終りでなければ4へ
16 ql k ┐
17 nl w │ (除数)2と比較
18 wl w ┘
19 k 31r (除数)2より大なら31へ
20 p 1c ┐ 表の循環部分の頭へ戻る
21 jl 13r ┘
22 ql k ┐
23 p 2 │ 商を新しいNにする
24 dl w │
25 tl k ┘
26 pl w ┐
27 tl o │ 因数を印刷
28 it │
29 jl p ┘
30 jl 6r
31 pl k ┐
32 tl o │ 最後の因数を印刷
33 it │
34 jl p ┘
35 jl 40 次の数を読む
0c: 0a
1c 5a
0a: 2,1,2,2,4,2,4,2,4,6,2,6,4,2,4,6,6,2,6,4,2,6,4,6,
8,4,2,4,2,4,8,6,4,6,2,4,6,2,6,6,4,2,4,6,2,6,4,2,
4,2,10,2,10,131072,
Author: H. Takahasi
Date: 60-4-28