【发布时间】:2015-01-28 02:33:37
【问题描述】:
我正在我的计算器上制作一个素数分解程序。它适用于较小的数字,但对于 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。
有人知道为什么会这样吗?
【问题讨论】: