Тема: РАБОТА С ПРОСТОЙ ПЕРЕМЕННОЙ. АЛГОРИТМЫ ЦЕЛОЧИСЛЕННОЙ АРИФМЕТИКИ
Цель работы: освоить работу с простой переменной и алгоритмами их обработки при решении задач целочисленной арифметики.
Типовые алгоритмы обработки простой переменной
Рассмотрим некоторые типовые алгоритмы обработки переменной целого типа, на базе которых решается множество задач, некоторые из них в дальнейшем будут рассмотрены.
Положим, что в декларативной части программы описаны следующие переменные: number, number1, number2 – целые числа, подлежащие обработке; temp – переменная для хранения цифры числа; delit – делитель числа; kolDel – количество делителей числа.
Для выделения цифры из числа будем использовать целочисленные операции div (целая часть) и mod (остаток от деления).
0. Ввод числа будем выполнять стандартными средствами:
WriteLn(’Введите целое число’); // вывели сообщение на экран
ReadLn(number); // ввели число с клавиатуры
Выделение цифр в числе
Для выделения последней цифры в числе используется операция mod. Например, при выделении последней цифры числа 123 в десятичной системе счисления имеем: 123 mod 10=3, т.е. находим остаток от деления числа на основание системы счисления.
|
|
Для вычисления второй цифры необходимо уменьшить число на один разряд, разделив его на основание системы счисления, и найти последнюю цифру полученного числа. Например, из выражения 123=12*10+3 имеем: 123 div 10=12 и, аналогично, 12 mod 10=2. Эту процедуру следует повторять пока в результате деления не получим число 0. Указанный алгоритм приведен ниже:
while number<>0 do begin
temp:=number mod 10; {temp - последняя цифра числа number}
number:=number div 10 {уменьшение числа number на один разряд}
end;
2. Нахождение д елителей числа
Делители числа лежат в диапазоне от 2 до половины числа. Например, делителями числа 15 являются числа: 3 (3 ≥ 2) и 5 (5 ≤ 7=15 div 2). Для нахождения всех делителей необходимо проверить кратность числа number всем числам delit из допустимого диапазона. Кратность числа проверяется с помощью операции mod. Если число number кратно некоторому числу delit, то остаток от деления будет равен 0. Например, 15 mod 3=0 и 15 mod 5=0.
for delit:=2 to number div 2 do // проверяем все числа из допустимого диапазона
if number mod delit=0 then // если число delit – делитель числа number
write(delit, ’ ’); // выводим его