저는 계산기에서 소수 분해 계산기를 만들고 있습니다. 그것은 작은 숫자에 대해 잘 작동하지만 2^n, n≥47에 대해 이상한 행동을 보입니다. 그것은 잠시 동안 괜찮을 것입니다. 그러나 어떤 시점에서 프로그램은 고장 나서 소수 17과 353을 내뱉은 후에 영원히 계속 달리고 있습니다.프라임 인수 분해 프로그램 (TI-84 +)
프로그래밍에 대한 내 지식이 극히 제한되어 있으므로 계산기가 이러한 많은 수를 정확히 처리하지 못하고 프로그램을 망칠 것으로 의심됩니다. 여기
코드이다 : (변수 후술; 출력 소인수를 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)
이 문제를 재현하려면 프로그램을 실행하고 n≥47 인 경우 2^n을 입력하십시오.
왜 이런 일이 발생하는지 알고 계십니까?
,'→ 0'이 DelVar''에 바람직하다 :
또한, 나는 조금 아래 코드를 단축 → 0보다 느립니다. – user3932000
@ user3932000 'DelVar'를 사용할 때 다음 콜론을 제거 할 수 있다는 것을 잊어 버렸습니다. 따라서, 적절한 각각의 사용은 무시할 수있는 속도 차이로 '→ 0'에 1 바이트를 절약합니다. – Timtech