Арифметика многократной точности (длинная арифметика) Бирюков С.В. План
Арифметика многократной точности (длинная арифметика) Бирюков С.В.
План лекции: Почему необходимо использовать длинную арифметику Ввод и представление длинных чисел Вывод длинных чисел Сравнение длинных чисел Сложение \ вычитание длинных чисел Умножение длинного числа на короткое Умножение двух длинных чисел Деление длинного числа на короткое Деление длинных чисел Извлечение квадратного корня из длинного числа Алгоритм быстрого деления чисел Алгоритм быстрого умножения чисел
Почему необходимо использовать длинную арифметику: Во всех современных языках программирования реализованы типы данных для работы с достаточно большими вещественными и целыми числами. Самый «большой» тип данных из доступных нам (С++ и Pascal) - 8-байтовое целое число – 2^64 (около 9*10^18). 2^64 – это очень много. Просто чтобы сосчитать до него с помощью среднего компьютера, потребуется около 200000 часов. Такого типа данных хватает практически всегда, если конечно речь не идет об олимпиадных задачах . Не спасают и вещественные типы данных так как представляют число лишь с некоторой точностью. Это понятно из их представления в памяти ЭВМ. Например, тип double имеет диапазон значений (-10Е307..10Е308). Однако он может хранить лишь несколько старших разрядов числа и его порядок. Именно поэтому он не пригоден в тех задачах, где необходим точный результат. Значит, необходимо самостоятельно реализовать нужные операции.
Представление длинных чисел: Прежде всего, определимся как и в какой структуре данных будут храниться числа. Любое число Х системе счисления по основанию В можно представить как Например, в привычной нам В=10: 4059 = 9*1 + 5*10 + 0*100 + 4 *1000 То есть мы можем хранить каждую цифру в отдельном элементе массива и выполнять операции отдельно над цифрами. Кроме того, мы можем выбрать основание системы максимально большим (например 10^9, вы можете выбрать любую), чтобы минимизировать число цифр, и соответственно число операций. Будем хранить число как бы «наоборот». Менее значимые разряды - в младших элементах массива. В нулевом элементе хранится длина числа.
51-lekciya-dlinnaya_arifmetika.ppt
- Количество слайдов: 21