質因子連乘式(II)
程式是根據網友 3173137 提供fx-3650P版本的質因子連乘式(II)程式修改以適合fx-50FH/50F PLUS使用,與質因子連乘式(I)程式比較,這個版本的程式除了可以顯示質因子,還可以顯示質因子的冪數,所以較為方便。另外雖然第二個程式很長,但對於計算大因質子時,由於使用較佳的方法,速度會明顯比第一個程式快,有關第二個程式的計算原理,請參看附註2。
更新日期: 2014年8月31日
注意: 藍色程式碼 ˚ 是按 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
註1: 如果是使用fx-3650P II或fx-50FH II,上述程式中紫色的開括號 ( 可以省略,程式長度可減1 byte。
第二個程式 (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
註2: 如果是使用fx-3650P II或fx-50FH II,上述程式中紫色的開括號 ( 可以省略,程式長度可減2 bytes。
例題: 求 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個數值,所以第二個程式的速度會較快,特別是分解的數值包含一些數值大的質因子,第二個程式會明顯地比第一個程式快。