Пояснення:В качестве кандидатов нужно рассматривать числа, не превышающие
(
S
−
1
)
2
, так как в худшем случае составное число вида
x
2
будет иметь два наибольших делителя
x
и 1. Время работы этого алгоритма
O
(
S
4
)
. Можно существенно ускорить вычисления, если учесть, что при поиске разложения на множители числа
N
можно рассмотреть только числа не превышающие
√
N
. Наибольшим делителем числа
N
будет
N
a
, где
a
– наименьший делитель, а вторым наибольшим делителем будет либо
N
b
, где
b
– второй по величине делитель
N
(также либо число, либо
a
2
), либо
a
, если
N
является произведением двух различных чисел, либо 1, если
N
=
a
2
.
Var x:array [1..n,1..n] of integer;
k,s,i,j:integer;
begin
randomize;
for i:=1 to n do begin
for j:=1 to n do begin
x[i,j] := random(100);
write(x[i,j]:6);
end;
writeln;
end;
for i := 1 to n do
for j := 1 to n do
for k := j+1 to n do
if x[j,i]=x[k,i]
then
writeln('NO')
else
writeln ('YES');
readln;
end.