Представьте числа по возрастанию количества делителей - Pascal ABC
Формулировка задачи:
Решение задачи: «Представьте числа по возрастанию количества делителей»
function Kol_del(n:integer):integer;
var i,k:integer;
begin
k:=2;//1 и само
for i:=2 to trunc(sqrt(n)) do//считаем делители до корня из числа и умножаем на 2
if n mod i=0 then inc(k,2);
if frac(sqrt(i))=0 then dec(k);//если число полный квадрат, то минус 1
Kol_del:=k;
end;
const n=20;
var a:array[1..n] of integer;
i,j,x:integer;
begin
randomize;
writeln('Исходный массив');
for i:=1 to n do
begin
a[i]:=100+random(900);
writeln(a[i]:4,' кол.дел.=',Kol_del(a[i]));
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if Kol_del(a[i])>Kol_del(a[j]) then
begin
x:=a[i];
a[i]:=a[j];
a[j]:=x;
end;
writeln('Отсортированный массив');
for i:=1 to n do
writeln(a[i]:4,' кол.дел.=',Kol_del(a[i]));
end.
Объяснение кода листинга программы
Данный код на языке Pascal ABC представляет собой реализацию функции Kol_del, которая принимает целое число n и возвращает количество делителей этого числа. Внутри функции используется цикл for, который выполняется от 2 до округленного значения корня из числа n. На каждой итерации цикла проверяется, делится ли число n на текущее значение i без остатка. Если да, то значение переменной k увеличивается на 2. Также проверяется, является ли число полным квадратом (frac(sqrt(i))=0). Если это так, то значение переменной k уменьшается на 1. В конце функция возвращает значение k. Далее идет основной код, который создает массив a размером n и заполняет его случайными числами от 100 до 900. Затем для каждого элемента массива выводится количество делителей, которое вычисляется с помощью функции Kol_del. Если количество делителей для текущего элемента больше, чем для следующего элемента, то происходит обмен этих элементов. В конце выводится отсортированный массив и количество делителей для каждого элемента. Таким образом, данный код решает задачу подсчета количества делителей для каждого числа в заданном массиве и выводит отсортированный массив с указанием количества делителей для каждого элемента.