Brute Force Method 〜 Sample Program

奇数によるしらみつぶし(2、3、5の倍数を除く:CASIO FX-702P 用)

10  INP A:C=SQR A
20  B=2:GSB 60:B=3:GSB 60:B=5:GSB 60:B=7:GSB 60
30  B=B+4:GSB 60:B=B+2:GSB 60:B=B+4:GSB 60:B=B+2:GSB 60
40  B=B+4:GSB 60:B=B+6:GSB 60:B=B+2:GSB 60:B=B+6:GSB 60
50  GOTO 30
60  IF B>C;PRT A;:END
70  IF A=INT(A/B)*B;PRT B;:A=A/B:C=SQR A:GOTO 60
80  RET

CASIO FX-702P 特有の命令の意味は以下のとおり。

INP……input
SQR……平方根(実数)
GSB……gosub
IF B>C;……if B>C then
PRT……print
INT……int(整数値)
RET……return

難波の方法

『高速乗算法と素数判定法』和田秀男、上智大学数学講究録 No.15、1983年
で紹介されていたアルゴリズムを CASIO FX-702P 用にインプリメントしたもの。

10  A=0:INP N:PRT N;"=";:C=0:K=4*N
20  C=C+1:A=A+K:T=INT(SQR A)+1:S=SQR(T*T-A)
30  IF S>INT S THEN 20
40  W=(T-S)/2:IF W>INT W THEN 20
50  M=N
60  R=M-W*INT(M/W):IF R-0 THEN 80
70  M=W:W=R:GOTO 60
80  IF W=1 THEN 20
90  PRT W;"*";N/W;" C=";C:GOTO 10

これだけ短ければ、ポケコンに入れっぱなしにしておいても邪魔にならない。
ただし、あまり大きな数の分解には向かない。
これを ubasic に直して多倍長整数の素因数分解をやろう、などと思わないこと。


戻る この章の目次  

E-mail : kc2h-msm@asahi-net.or.jp
三島 久典