我正在为我的计算器制作找质因数程序。它对于较小的数字工作得很好,但是对于 2^n, n≥47 的情况表现出奇怪的行为。它在一段时间内工作正常,但是在某个点上,程序会崩溃,并在输出了质数17和353后一直运行。
由于我在编程方面极其有限的知识,我怀疑计算器无法准确处理如此大的数字,从而破坏了程序。
以下是代码:(下面解释了变量;以 A^B 形式输出质因数的形式为 A+Bi)。
由于我在编程方面极其有限的知识,我怀疑计算器无法准确处理如此大的数字,从而破坏了程序。
以下是代码:(下面解释了变量;以 A^B 形式输出质因数的形式为 A+Bi)。
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: 需要进行质因数分解的数字(输入)
#I: 一个质因子
#R: 唯一质因子的数量
#S: 质因子的指数
#ʟP: N的质因数分解结果(输出)
要重现此问题,请运行程序并输入任何2^n,其中n≥47。
有人知道为什么会发生这种情况吗?
→0
比DelVar
更可取,因为DelVar
(2个字节)占用相同的空间,而速度比→0
慢。 - user3932000DelVar
时,后面的冒号可以省略。因此,每个适当的使用都比→0
节省一个字节,在速度上几乎没有区别。 - Timtech