Алгоритм перебора чисел
Назовём нетривиальным делителем натурального числа его делитель, не равный единице и самому числу. Например, у числа 6 есть два нетривиальных делителя: 2 и 3. Найдите все натуральные числа, принадлежащие отрезку [123456789; 223456789] и имеющие ровно три нетривиальных делителя. Для каждого найденного числа запишите в ответе его наибольший нетривиальный делитель. Ответы расположите в порядке возрастания.
maxi = 0
for i in range(123456789, 223456790):
sqrti = i**0.5
numdel = 0
if round(sqrti) == sqrti:
maxdel = 1
for j in range(2, round(sqrti) - 1):
if i % j == 0:
if maxdel == 1: maxdel = i // j
numdel += 2
if numdel == 2: print(i, maxdel)
отрезок большой и программа работает эффективно из-за строки
if round(sqrti) == sqrti:
как это работает с математической точки зрения?