我正在我的计算器上制作一个素数分解程序。它适用于较小的数字,但对于 2^n,n≥47,它显示出奇怪的行为。它会在一段时间内正常运行,但在某些时候程序会崩溃,并在吐出素数 17 和 353 后,会一直运行下去。
由于我在编程方面的知识极其有限,我怀疑计算器无法准确处理这么大的数字并弄乱程序。
这是代码:(下面解释的变量;以 A+Bi 的形式输出素因子,用于 A^B 的素因子)
ClrHome
Disp "N=Number
Input "N: ",N
If N≥2 and not(fPart(N)):Then
0→dim(ʟP)
2→I
0→R
0→S
Repeat N=1
If not(fPart(N/I)):Then
While not(fPart(N/I))
N/I→N
S+1→S
End
R+1→R
I+Si→ʟP(R)
0→S
End
I+1→I
End
End
ʟP
#N: Number to be prime-factored (input)
#I: A prime factor
#R: Number of unique prime factors
#S: Exponent on prime factor
#ʟP: Prime factorization of N (output)
要重现此问题,请运行程序并输入任何 2^n (对于 n≥47)。
有谁知道为什么会这样?