Я делаю первую факторизацию программы на своем калькуляторе. Он отлично работает для меньших чисел, но он показывает странное поведение для 2^n, n≥47. На какое-то время это будет хорошо, но в какой-то момент программа распадается и после выплескивания простых чисел 17 и 353 продолжает работать вечно.Первичная программа факторизации (TI-84 +)
С моими крайне ограниченными знаниями в области программирования я подозреваю, что калькулятор не может справиться с таким большим количеством точно и испортить программу.
Вот код: (переменные описаны ниже; выводит простые множители в виде А + 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.
Кто-нибудь знает, почему это происходит?
На самом деле, '→ 0' предпочтительнее' DelVar', так как 'DelVar' (2 байта) занимает столько же места, в то же время медленнее, чем '→ 0'. – user3932000
@ user3932000 Я вижу, что вы пытаетесь сказать, но вы забыли, что, когда используется 'DelVar', можно удалить следующий двоеточие. Таким образом, каждое подходящее использование сохраняет один байт над '→ 0' с незначительной разницей в скорости. – Timtech