gpt4 book ai didi

prime-factoring - 素数分解程序 (TI-84+)

转载 作者:行者123 更新时间:2023-12-04 07:10:38 25 4
gpt4 key购买 nike

我正在我的计算器上制作一个素数分解程序。它适用于较小的数字,但对于 2^n,n≥47,它显示出奇怪的行为。它会在一段时间内运行良好,但是在某个时候程序崩溃了,并且在吐出质数 17 和 353 之后,它会一直运行下去。

由于我在编程方面的知识极其有限,我怀疑计算器无法准确处理如此大的数字并弄乱程序。

这是代码:(变量解释如下;对于 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: 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。

有谁知道为什么会这样?

最佳答案

你的假设是正确的。 TI-Basic 中的实数数据类型最多只能存储 44 位数据 (source)。这可以通过以下方式使用 the solve( command 来证明:

solve((X+1)-X,X,0

无论是作为程序运行,作为子程序调用,还是从主屏幕执行,该程序/函数都将输出与您的失败点相似范围内的大量数字(这永远不会发生,因为 X+1 永远不会等于 X )。

另外,我稍微缩短了您的代码:
ClrHome
Prompt N
If N≥2 and not(fPart(N:Then
0→dim(ʟP
DelVar RDelVar S2→I
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

关于prime-factoring - 素数分解程序 (TI-84+),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com