Объясните как работает программа, пожалуйста
Дана задача: Найдите все натуральные числа, принадлежащие отрезку [101 000 000; 102 000 000], у которых ровно три различных чётных делителя (при этом количество нечётных делителей может быть любым). В ответе перечислите найденные числа в порядке возрастания Есть решение:
for N in range (101000000,102000000+1):
p= (N/2)**0.5
if p==int(p):
k=0
for i in range (2,int(p//2)+1):
if p%i==0:
k+=1
break
if k==0: print(N)
нужно объяснить как работает данный код. Прям по каждой строчке.
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Код неверно форматирован, правильно так:
for N in range (101000000,102000000+1): # Цикл по всем числам
p = (N/2)**0.5 # Проверка, что число имеет вид 2*p*p, где p - простое
if p==int(p): # См. https://ru.stackoverflow.com/q/1276104/195342
k=0 # Проверка числа p на простоту
for i in range (2,int(p//2)+1): # В цикле перебираются все возможные делители
if p%i==0:
k+=1
break
if k==0: print(N)