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 | …… | |
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 に直して多倍長整数の素因数分解をやろう、などと思わないこと。
戻る | この章の目次 |
---|