Задание:
Дан целочисленный массив из 30 элементов, все элементы которого – положительные числа, не превосходящие 100. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит номер элемента, имеющего максимальное количество целочисленных делителей (если таких элементов несколько, то номер любого из них). Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль:
const N=30;
var a: array [l..N] of integer;
i,j,k,imax,kmax: integer;
begin
for i:=l to N do readln(a[i]);
...
end.
Решение:
Недостающий фрагмент:
imax:=0;
kmax:=0;
for i:=1 to N do begin
k:=0;
for j:=1 to A[i] do
if A[i] mod j = 0 then k:= k + 1;
if k > kmax then begin
imax := i; kmax := k
end;
end;
Writeln(imax);
Разбор программы:
* В нашем случае нужная программа реализовывается при помощи встроенного цикла. В переменной imax в итоге сохранится номер элемента, у которого максимальное количество целочисленных делителей. В переменной kmax в каждом цикле будут считаться делители числа.
* Запускается встроенный цикл с условием, если число делится, переменная k увеличивается на единицу.
* Далее с помощью еще одного условия проверяем, если делителей больше, то в переменной imax запоминаем номер данного числа. Обнуляем значение перменной kmax и идем в новый цикл. Так по очереди проверяется каждое число массива.
* В конечном итоге на экран выводится значение переменной imax, то есть число с максимальным количеством целочисленных делителей.