質因子連乘式(II)

程式是根據網友 3173137 提供fx-3650P版本的質因子連乘式(II)程式修改以適合fx-50FH/50F PLUS使用,與質因子連乘式(I)程式比較,這個版本的程式除了可以顯示質因子,還可以顯示質因子的冪數,所以較為方便。另外雖然第二個程式很長,但對於計算大因質子時,由於使用較佳的方法,速度會明顯比第一個程式快,有關第二個程式的計算原理,請參看附註2。

網友提供程式日期: 2008年1月7日

注意: 藍色程式碼 ˚ 是按 o,,,

第一個程式 (100 bytes)

ClrMemory: ?→X: Fix 0: Lbl 0: 2 - (M=2 M+:

MM>X => X→M: X - MRnd( X÷M => Goto 0:

Lbl 1: X=MM^( Y )Rnd( X÷( MM^( Y => Y + 1→Y:

Ans => Goto 1: M˚ + Y÷60˚◢ X÷M^( Y→X:

1→Y: X - 1 => Goto 0: Norm 1

 

第二個程式 (292 bytes)

ClrMemory: ?→X: 2M+: Fix 0: Lbl 0:

X=MM^( Y )Rnd( X÷( MM^( Y => Y+1→Y:

Ans => Goto 0: Y => M˚ + Y÷60˚

X÷M^( Y→X: X=1 => Goto 7: 0→Y: 2 - (M=2M+:

M - 7 => Goto 0: Lbl 1:

X=M Rnd( X÷M => Goto 3: 4M+:

X=M Rnd( X÷M => Goto 3: 2M+:

X=M Rnd( X÷M => Goto 3: 4M+:

X=M Rnd( X÷M => Goto 3: 2M+:

X=M Rnd( X÷M => Goto 3: 4M+:

X=M Rnd( X÷M => Goto 3: 6M+:

X=M Rnd( X÷M => Goto 3: 2M+:

X=M Rnd( X÷M => Goto 3: 6M+:

X≧MM => Goto 1: X→M: Lbl 3:

X=MM^( Y )Rnd( X÷( MM^( Y => Y+1→Y:

Ans => Goto 3: M˚ + Y÷60˚◢ X÷M^( Y→X: 1→Y:

7 + 30Rnd( M÷30 - . 7→M: X-1 => Goto 1: Lbl 7: Norm 1

 

例題: 求 352的質因子連乘式。

按 Prog 1 再按 352 EXE (顯示 2˚5˚0,即是質因子為25)

EXE (顯示 11˚1˚0,即是質因子為111) ) EXE (顯示Norm 1表示計算完結)

所以 352 = 25 × 11

 

註1: 輸入的數值必須為正整數,否則計算會錯誤,程式計算的數值要小於 9999 9999 99。

註2: 第一個程式嘗試的因子為2及正奇數(不包括1),第二個程式嘗試的因子為 2, 3, 5, 7+30n, 13+30n, 19+30n, 23+30n, 29+30n及31+30n (其中 n為0或正整數),亦即是嘗試的因子除了2, 3, 5外,其它嘗試的奇數是不包括 3 及 5的倍數,所以若果不考慮開始的2, 3, 5因子,第一個程式每30個正數,要嘗試15個數值,而第二個程式則每30個正數,只嘗試8個數值,所以第二個程式的速度會較快,特別是分解的數值包含一些數值大的質因子,第二個程式會明顯地比第一個程式快。

 

返回 CASIO fx-50FH 及 fx-50F PLUS 程式集

Free Web Hosting