Найти все автоморфные числа через процедуру - Free Pascal
Формулировка задачи:
Всем привет, столкнулся с проблемой, что не могу написать программу. Нужна ваша помощь.
Желательно написать без функций типа trunc т.к. такого не изучали.
Вот условие:
8. Программа с помощью процедуры задает последовательность чисел 1,2,3...n(n<=100). Среди них находит автоморфные числа(число и последние цифры его квадрата равны) Например: 5 и 25, 25 и 625.
Спасибо заранее)
Решение задачи: «Найти все автоморфные числа через процедуру»
textual
Листинг программы
procedure avto(n: integer; var f: boolean);
var
m: longint;
begin
m := n * n;{квадрат числа}
f := true;{предположим что автоморфное}
while (n > 0) and f do
begin
if (n mod 10) <> (m mod 10) then
f := false
else
begin
n := n div 10;
m := m div 10;
end;
end;
end;
var
a, b, i, k: longint;
flag: boolean;
begin
repeat
writeln('Введите диапазон натуральных чисел b>a:');
readln(a, b);
until(a > 0) and (b > a);
writeln('Автоморфные числа в интервале ', a, '-', b);
k := 0;
for i := a to b do
begin
Avto(i, flag);
if flag then
begin
writeln(i:10, sqr(i):10);
k := 1;
end;
end;
if k = 0 then
write('Таких чисел нет!');
end.
Объяснение кода листинга программы
- Автоморфные числа - это числа, которые при преобразовании в квадратное трехзначное число дают исходное число.
- В коде реализована функция
avto, которая проверяет, является ли число автоморфным. - В функции
avtoпеременнаяmхранит квадрат числаn. - Переменная
fинициируется значениемtrue, предполагая, что число автоморфное. - В цикле while происходит деление числа
nна 10 и проверка, совпадает ли последняя цифра числаnи квадрата числаm. - Если последняя цифра не совпадает, то значение переменной
fменяется наfalse. - Если последняя цифра совпадает, то число
nиmделятся на 10. - Цикл while продолжается, пока число
nбольше 0 и значение переменнойfравноtrue. - После окончания цикла, функция возвращает значение переменной
f. - В основной программе задается диапазон натуральных чисел для проверки на автоморфность.
- С помощью цикла for происходит проверка каждого числа в заданном диапазоне.
- Если число является автоморфным, то оно выводится на экран вместе с его квадратом.
- Если в заданном диапазоне нет автоморфных чисел, то выводится сообщение
Таких чисел нет!.