Задача: Назовём нетривиальным делителем натурального числа его делитель, не равный единице и самому числу. Например, у числа 6 есть два нетривиальных делителя: 2 и 3. Найдите все натуральные числа, принадлежащие отрезку [289123456; 389123456] и имеющие ровно три нетривиальных делителя. Для каждого найденного числа запишите в ответе его наибольший нетривиальный делитель. Ответы расположите в порядке возрастания.
Например, в диапазоне [5; 16] ровно три различных натуральных делителя имеет число 16, поэтому для этого диапазона вывод на экране должна содержать следующие значения:
16 8
Вот решение на паскале, но как перевести данный код на питон. Я раньше на паскале программировал, но уже забыл его так как я уже перешел на новый язык программирования.
var
numDel, i, j: longint;
maxDel: longint;
sqrtI: real;
begin
for i := 289123456 to 389123456 do begin
sqrtI := sqrt(i);
numDel := 0;
if (round(sqrtI) = sqrtI) then begin
maxDel := 1;
for j := 1 to round(sqrtI) do
if (i mod j = 0) then begin
if (maxDel = 1) and (j <> 1) then maxDel := i div j;
if (j <> round(sqrtI)) then numDel := numDel + 2;
if (j * j = i) then numDel := numDel + 1;
end;
if numDel = 5 then writeln(i, ' ', maxDel);
end;
end;
end.
Вот попытка решить задачу, но у меня программа не работает. Выдает ошибку SyntaxError: invalid syntax
from math import sqrt
for i in range(289123456, 389123456+1):
sqrtIT = sqrt(i)
numDel = 0
if (round(sqrtIT)) == sqrtIT:
maxDel = 1
for j == 1:
round(sqrtIT)
if (i % j == 0):
if maxDel == 1 and j <> 1:
maxDel = i / j
if (j <> round(sqrtIT)):
numDel += 2
if j * j == i:
numDel += 1
if numDel == 5:
print(i, ' ', maxDel)