Объясните как работает программа, пожалуйста

Дана задача: Найдите все натуральные числа, принадлежащие отрезку [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)
→ Ссылка