Пояснення:В качестве кандидатов нужно рассматривать числа, не превышающие
(
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
.
Program pryam;
Var y1, y2, y3, x1, x2 : real;
Begin
writeln ('Введите координату (у) верхней точки прямой');
readln (y1);
writeln ('Введите координату (у) нижней точки прямой');
readln (y2);
writeln ('Введите координату (х) точек-концов прямой');
readln (x1);
writeln ('Введите координату (у) точки, принадлежность к прямой которой нужно определить');
readln (y3);
writeln ('Введите координату (х) точки, принадлежность к прямой которой нужно определить');
readln (x2);
if (y3<=y1) and (y3>=y2) and (x2=x1) then writeln (' принадлежит ')
else writeln (' не принадлежит ');
readln;
End.