
04.05.2008, 13:05
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Catsy, первая задача
Код:
program deliteli;
{Составить программу для нахождения чисел из интервала [M, N],
имеющих наибольшее количество делителей.}
procedure GetCount (x : integer; var count : integer);
{Подсчет кол-ва делителей для каждого числа}
var
i, j : integer;
begin
i := 2;
count := 0;
j := x div 2;
while (i <= j) do begin
if x mod i = 0 then begin
write (i, ' ');
inc (count);
x := x div i;
end else
inc (i);
end;
writeln;
end;
procedure PrintNumbers (x, y : array of integer; count, index : integer);
var
i : integer;
begin
for i := 0 to count - 1 do
if y [i] = index then
writeln (x [i]);
end;
var
n1, n2, i, j, count, max : integer; {Первое, последнее число, счетчики цикла, кол-во делителей, максимальное кол-во делителей}
numbers : array [1..255] of integer; {Массив для чисел}
del_count : array [1..255] of integer; {Массив для количества делителей каждого числа}
begin
write ('Введите первое число n1: ');
readln (n1);
write ('Введите последнее число n2: ');
readln (n2);
count := 0;
max := 0;
j := 1;
for i := n1 to n2 do begin
numbers [j] := i;
write ('Делители числа ', i, ': ');
GetCount (i, count);
del_count [j] := count;
if count > max then
max := count;
writeln ('Количество: ', count);
inc (j);
end;
writeln ('Максимальное число делителей: ', max);
writeln ('Числа, имеющие наибольшее кол-во делителей');
PrintNumbers (numbers, del_count, n2 - n1 + 1, max);
end.
Условие второй как-то не совсем понял 
|
|
|