#10.0 Деление нацело и получение остатка от деления в Паскале (div и mod). Проверка четности и нечетности чисел

(урок в процессе разработки)

Математическая подготовка

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

И затем можно уже перейти к примерам кода дальше.

Общая идея

Общую идею работы операторов div и mod можно проиллюстрировать примером кода:

var a, b: integer;
begin
  writeln('Введите делимое:');
  readln(a);
  writeln('Введите делитель:');
  readln(b);
   writeln(a, '/', b, '=', a div b);
  writeln('Остаток=', a mod b);

  readln();
end.

Оператор mod

Для получения остатка от деления числа $A$ на число $B$ используйте выражение с оператором mod:
$ A \; mod \; B$

Например:

b := 78 mod 33; // получим  12 = 78 - 66 = 78 - 33*2

Примеры для конкретных чисел

При этом (результат операции -- остаток от деления):

5 mod 2  // 1
3 mod 2  // 1
6 mod 2  // 0
8 mod 2  // 0
4 mod 1  // 0
3 mod 5  // 3

Узнать делится ли число нацело на другое

С помощью условного оператора в Паскаль можно узнать делится ли одно число на другое.
Приведём пример программы, которая получает из консоли (от пользователя) два целых числа и проверяет делится ли первое на второе с помощью оператора mod.

Идея состоит в том, что если число $a$ делится на $b$ нацело, то остаток от такого деления равен нулю.
Приведём решение:

var a, b:integer;
begin
  writeln('vvedite chislo a:');
  readln(a); // считываем число а
  writeln('vvedite chislo b:');
  readln(b);  // считываем число b

  if (a mod b) = 0 then  // проверяем делимость
    writeln(a, ' delitcy na ', b, ' nacelo')
  else
    writeln(a, ' NE delitcy na ', b, ' nacelo');

  readln();  // удержимаем консоль
end.   

Четность/нечетность (делимость на 2)

Аналогично коду выше, если число делится нацело на 2 -- то оно четное (остаток равен нулю), иначе -- нечетное.

Примеры

Пример №1 - получаем целую часть от деления и остаток на 2

var a, b, c, d : integer;
begin
  writeln('Введите целое число:');
  readln(a);
  writeln(a, '/2=', a div 2);
  writeln('Остаток=', a mod 2);

  readln();
end.

Пример №2 -- Определяем делимость

Определяем является ли число 8 четным:

var a, b: integer;
begin
  writeln('8 четное:', (8 mod 2) = 0);

  readln();
end.

Определяем делится ли число 9 на 3:

var a, b: integer;
begin
  writeln('9 делится на 3:', (9 mod 3) = 0);

  readln();
end.

Видео-пояснения

Для этого урока есть следующию видео-пояснения:

  • Div и mod для деления и получения остатка в Паскале -- УТОЧНЕНИЕ: в видео говорится, что мы еще не знаем условный оператор, но это не так! Условный оператор по порядку изучения идет раньше, поэтому в тексте этого урока вы встретите примеры его использования.

Задачи

  1. Пользователь вводит число, определите делится ли оно на 4
  2. Пользователь вводит 4 целых числа, выведите на экран не более трех из этих чисел, которые делятся нацело на 4 (т.е. нужно вывести те числа, которые делятся на 4, но не более трех штук).

    Подсказка: если решить не получается или для закрепления см. видео-разбор решения.

  3. ---------------
    Дополнительная проверка знаний (если выше все понятно, решать не обязательно):

  4. Пользователь вводит 2 целых числа, выведите на экран не более 1 из этих чисел, которые делятся нацело на 4 (т.е. нужно вывести те числа, которые делятся на 4, но не более одного).

    (Задача добавлена для закрепления идеи решения аналогичной задачи про 4 числа выше, для которой есть разбор)

  5. Пользователь вводит 3 целых числа, выведите на экран не более 2 из этих чисел, которые делятся нацело на 4 (т.е. нужно вывести те числа, которые делятся на 4, но не более двух).

    (Задача добавлена для закрепления идеи решения аналогичной задачи про 4 числа выше, для которой есть разбор)

  6. Пользователь вводит 5 целых числа, выведите на экран не более трех из этих чисел, которые делятся нацело на 4 (т.е. нужно вывести те числа, которые делятся на 4, но не более трех штук).

    (Задача добавлена для закрепления идеи решения аналогичной задачи про 4 числа выше, для которой есть разбор)