Ниже приведён пошаговый алгоритм сложения двух смешанных чисел в нужном порядке действий, а затем пример для иллюстрации.
Заданная запись: A = a + p/q, B = b + r/s, где p/q и r/s — дробные части (обычно p < q и r < s).
- Первый шаг: сократить дроби и учесть целую часть из дробной
- Сократите каждый дробной компонент: найдите gcd(p, q) и gcd(r, s) и поделите числитель и знаменатель на эти значения.
- Затем, если дробная часть стала не менее 1 (то есть p ≥ q или после сокращения p ≥ q), вынесите целую часть из дробной части:
- для A: a := a + floor(p/q); p := p mod q; (после этого дробная часть будет p/q с p < q)
- для B: b := b + floor(r/s); r := r mod s; (после этого дробная часть будет r/s с r < s)
- Второй шаг: привести дробные части к общему знаменателю (наименьшее общее кратное)
- Найдите L = lcm(q, s).
- Приведите дроби к этому знаменателю:
- p' = p * (L / q)
- r' = r * (L / s)
- Теперь дробные части имеют общий знаменатель L, и можно складывать их числители напрямую: F = p' + r'.
- Третий шаг: отдельно сложить целые части и дробные части
- Сумма целых частей: A_int = a + b
- Сумма дробных частей: F / L
- Если F ≥ L, вынесите целую часть из дроби:
- A_int := A_int + floor(F / L)
- F := F mod L
- Сократите итоговую дробь F / L: найдите gcd(F, L) и разделите числитель и знаменатель на него.
- Итог: результат равен A_int и дробной части F/L (или, если F = 0, просто A_int).
Пример Сложим 3 5/8 и 2 7/12.
Шаг 1: дроби уже сокращены и каждую дробную часть можно считать нормальной (5/8 и 7/12, обе proper). a = 3, p/q = 5/8 b = 2, r/s = 7/12
Шаг 2: общий знаменатель q = 8, s = 12 → L = lcm(8, 12) = 24 p' = 5 * (24/8) = 15 r' = 7 * (24/12) = 14 Сейчас дробная часть будет 15/24 и 14/24
Шаг 3: сложение A_int = 3 + 2 = 5 F = 15 + 14 = 29, L = 24 Так как F ≥ L, вынесем целую часть: A_int = 5 + floor(29/24) = 5 + 1 = 6 F = 29 mod 24 = 5 Сокращение дроби: gcd(5, 24) = 1 → дробь 5/24
Итого: 3 5/8 + 2 7/12 = 6 5/24
Примечания
- Если после сложения дробных частей получилась дробь, которую можно сократить, обязательно сделайте сокращение на последнем шаге.
- Если сумма дробных частей даёт дробь без целого (F < L), результат будет A_int и F/L.
- Этот подход подходит и для случаев, когда после сложения дробная часть становится целой (F = 0), тогда итог — просто A_int.