14 Вопрос
Алгоритм сложения
Сложение однозначных чисел можно выполнить, основываясь на определении этого действия, но чтобы всякий раз не обращаться к определению, все суммы, которые получаются при сложении однозначных чисел, записывают в особую таблицу, называемую таблицей сложения однозначных чисел, и запоминают.
Естественно, смысл сложения сохраняется и для многозначных чисел, но практическое выполнение сложения происходит по особым правилам. Сумму многозначных чисел обычно находят, выполняя сложение столбиком.
Видим, что в основе алгоритма сложения многозначных чисел лежат следующие теоретические факты:
- способ записи чисел в десятичной системе счисления;
- свойства коммутативности и ассоциативности сложения;
- дистрибутивность умножения относительно сложения; -таблица сложен и я однозначных чисел.
Выведем алгоритм сложения многозначных чисел в общем виде. Пусть даны числа: х = аn*10n + аn-1*10 n-1 + ... + а0 и у = bп*10 n+ bn-1*10n-1 + ... +b0, т.е. рассмотрим случай, когда количество цифр в записи чисел х и у одинаково, х + у -= (an*10n+an-1*10n-1+ ... + а0) + (bn*10n+bn-1 + ... + b0) = (an+bn)*10n+(an-1+bn-1)*10n-1+ ... + (ав + b0) - преобразования выполнены на основе свойств ассоциативности и коммутативности сложения, а также дистрибутивности умножения относительно сложения. Сумму (а, +bn)10n + (аn-1 + bn-1)*10n-1 + ... + (а0 + b0), вообще говоря, нельзя рассматривать как десятичную запись числа х + у, так как коэффициенты перед степенями 10 могут быть больше 9. Лишь в случае, когда все суммы ак + bk не превосходят 9, операцию сложения можно считать законченной. В противном случае выбираем наименьшее к, для которого ак + bк ≥10. Если ак + bк ≥ 10, то из того, что 0 ≤ ак ≤ 9 и 0 ≤ bк ≤ 9, следует неравенство 0 ≤ ак + bк≤18 и поэтому аk + bк можно представить в виде ак + bк = 10 + ск, где 0 ≤ск ≤ 9. Но тогда (ак + bк)*10к = (10 + сk)*10k=10k+1+ ck* 10 . В силу свойств сложения и умножения в (ап+bn)*10n +...+(a0+b0) слагаемые (аk+1 + bk+1)*10k+1 + (аk + bk)*10 могут быть заменены на (ak+1 + bk+1+ 1)*10k+1 + сk*10k . После этого рассматриваем коэффициенты аn+ bn, аn-1, + bп-1, ..., ak+2 + bk+1, ak+1+ bк+1 + 1, выбираем наименьшее s, при котором коэффициент больше 9, и повторяем описанную процедуру. Через п шагов придем к выражению вида: х + у = (сn + 10)*10n + ... + с0, где сn ≠ 0, или х + у = 10n+1+ сn*10n + ... + с0, и где для всех п выполняется равенство 0 ≤ сn < 10. Тем самым получена десятичная запись числа х + у.
В случае когда десятичные записи слагаемых имеют разное количество цифр, надо приписать к числу, имеющему меньшее количество цифр, несколько нулей впереди, уравняв количество цифр в обоих слагаемых. После этого применяется описанный выше процесс сложения.
Он позволяет сформулировать в общем виде алгоритм сложения натуральных чисел, записанных в десятичной системе счисления.
1. Записывают второе слагаемое под первым так, чтобы соответствующие разряды находилось друг под другом.
2. Складывают единицы первого разряда. Если сумма меньше десяти записывают ее в разряд единиц ответа и переходят к следующему разряду (десятков).
3. Если сумма единиц больше или равна десяти, то представляют ее в виде а0+ b0 = 1 • 10 + св, где с0 - однозначное число; записывают с0 в разряд единиц ответа и прибавляют 1 к десяткам первого слагаемого, после чего переходят к разряду десятков.
4. Повторяют те же действия с десятками, потом с сотнями и т.д. Процесс заканчивается, когда оказываются сложенными цифры старших разрядов. При этом, если их сумма больше или равна десяти, то приписываем впереди обоих слагаемых нули, увеличиваем нуль перед первым слагаемым на 1 и выполняем сложение 1+0=1.
Заметим, что в этом алгоритме (как и в некоторых других). для краткости употребляется термин «цифра» вместо «однозначное число, изображаемое цифрой».