ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА При решении ряда задач нам необходимо обрабатывать натуральные или целые числа. Операции, которыми мы чаще всего будем пользоваться при решении этих задач – это операции div и mod. div возвращает целое частное, а mod остаток от деления. Например, 27 div 5 =5 27 mod 5=2. Упражнение. Найдите значение выражения: 4 div 2= 34 div 12= 45 mod 21= 12 div 15= 5 mod 5= 12345 mod 10= 12345 div 10= 34 mod 12= а) Как проверить, что число х является четным? А число у – нечетным? if x mod 2=0 then writeln(‘Четное’); if y mod 2<>0 then writeln(‘Нечетное’); б) Как проверить, что некоторая переменная а, описанная в программе кратна 5? if a mod 5=0 then writeln(‘Кратна’); в) Как проверить, что некоторая переменная b, описанная в программе при делении на 8 дает остаток 2? if b mod 8=2 then writeln(‘Верно’); г) Как проверить, что некоторая переменная а, описанная в программе кратна переменной b? if a mod b=0 then writeln(‘Кратна’); д) С помощью какой математической формулы можно узнать значение последней цифры натурального числа? a mod 10 е) Как отбросить от числа последнюю цифру? a:=a div 10 Разберем, при решении каких задач мы используем операции целочисленного деления. Задача 1 С клавиатуры вводится расстояние в м. Вывести это расстояние в более крупных единицах измерения. Program Task2; Var S: longint; km, m: integer; Begin write(‘S=’); readln (S); km:=s div 1000; m:= s mod 1000; If km<> 0 then write (km,’ km ‘); If m<> 0 then write(m, ‘ m ‘); Readln; End. Задача 2 С клавиатуры задается натуральное двузначное число. Выяснить: какая из его цифр больше – цифра десятков или цифра единиц. Program Task; Var a:integer; Begin write (‘a=’); readln(a); if a mod 10 = a div 10 then writeln(‘Ravny’) else if a mod 10>a div 10 then writeln (‘Cifra edinic bolshe’) else writeln (‘Cifra desytkov bolshe’); readln; end. Задача 3 С клавиатуры вводится натуральное число а, вывести на экран все натуральные делители этого числа. Идея решения: у любого натурального числа самый маленький делитель 1, а самый большой – само это число. Будем перебирать все числа из диапазона от 1 до а и выводить те из них, на которые делится а. Program Delit; Var a,i:integer; begin writeln(‘Введите натуральное число’); readln(a); for i:=1 to a do if a mod i=0 then writeln(i); end. Задачи для самостоятельного решения. 1. С клавиатуры задаются два натуральных числа, если числа разной четности, то вывести их сумму, иначе – их произведение. 2. Найти сумму цифр заданного с клавиатуры трехзначного натурального числа. 3. Число называется совершенным, если оно равно сумме своих делителей, исключая само это число. Например, 6=1+2+3. Число 6 – совершенное число. С клавиатуры вводится число а. Выяснить, является ли число а совершенным. Задача 4 Найти сумму цифр, входящих в состав натурального числа а, которое вводится с клавиатуры. Идея решения: пока в числе есть цифры (т.е. число отлично от 0) мы прибавляем к сумме последнюю цифру числа, а затем эту цифру от числа откидываем (как это можно сделать?) Например: S=0; a=12345 S=5, a=1234 S=9, a=123 S=12, a=12 S=14, a=1 S=15, a=0. Program Summa; Var a,S:integer; begin writeln(‘Введите натуральное число’); readln(a); S:=0; while a<>0 do begin S:=S+ a mod 10; a:=a div 10; end; writeln(S); end. Задача 5 С клавиатуры вводится натуральное число а, запишите в переменную b число, полученное переворачиванием исходного числа. Т.е. если с клавиатуры ввели число 2345, то в переменной b должно быть записано число 5432. Идея решения: в качестве начального значения переменной b возьмем 0, будем отрывать от переменной а по одной цифре с конца и приписывать в конец переменной b (как это можно сделать?) Program Perev; Var a,b:integer; begin writeln(‘Введите натуральное число’); readln(a); b:=0; while a<>0 do begin b:=b*10+a mod 10; a:=a div 10; end; writeln(b); end.