Преобразование десятичной дроби в простую

Преобразование десятичной дроби в простую с заданной точностью по рекуррентным формулам:

pk = pk−1ak + pk−2

qk = qk−1ak + qk−2

Распределение регистров

Данные пользователя:

Служебные (используются для нужд самой программы):

Неиспользуемые:

Использование

Перед началом расчётов требуемая точность заносится в #0.

Десятичная дробь, которую нужно перевести в простую, заносится в #X, после чего нажимаются клавиши В/О С/П. После останова в #X и #1 находится числитель, а в #Y и #2 — знаменатель искомой дро́би. Исходная дробь остаётся в #6.

Примеры расчётов

  1. π = 3.1415926 при Δ = 0.1:
  2. e = 2.7182818 при Δ = 10−8:

Исходный код

00. X→П6	01. К[x]	02. X→П3	03. CX		04. 1		05. X→П4	06. FВx		07. К{x}	08. F1/x	09. К[x]
10. FВx		11. К{x}	12. X→П5	13. F⟳		14. П→X3	15. ↔		16. ×		17. FВx		18. F⟳		19. +
20. X→П1	21. ↔		22. F⟳		23. F⟳		24. F⟳		25. П→X4	26. ×		27. +		28. X→П2	29. ÷
30. П→X6	31. −		32. К|x|	33. П→X0	34. ↔		35. −		36. Fx<0	37. 49		38. П→X4	39. П→X2
40. X→П4	41. F⟳		42. П→X3	43. П→X1	44. X→П3	45. F⟳		46. П→X5	47. БП		48. 08		49. П→X2
50. П→X1	51. С/П

По сравнению с оригинальной программой эта длинее на 3 шага, зато за счёт оптимизации хранения данных в стеке использует на 3 адресуемых регистра меньше.

Источник: журнал «Наука и жизнь», № 4 / 1990, стр. 102.

Авторы: ученик 10-го класса Е. Фенюшин (Кольчугин).

Оптимизировал, перевёл в формат эмулятора и составил эту инструкцию: Адам Лаврик — 2026-05-08.