Найдите все натуральные числа, принадлежащие отрезку [101 000 000; 102 000 000], у которых ровно три различных чётных делителя.
В ответе перечислите найденные числа в порядке возрастания.
Решение:
|
for i in range(101000000, 102000000 + 1, 2): k = 1 d = 2 while d * d < i: if i % d == 0: if d % 2 == 0: k += 1 if (i//d) % 2 == 0: k += 1 if k > 3: break d += 1 if d * d == i: k += 1 if k == 3: print(i) |
Вот более быстрый метод: корень из X/2 — должен быть простым
|
def isprime(n): d = 2 while d * d <= n: if n % d == 0: return False d += 1 return True for i in range(101000000, 102000000 + 1, 2): if (i // 2) ** 0.5 == int((i // 2) ** 0.5): if isprime((i // 2) ** 0.5): print(i) |
101075762
101417282
101588258
101645282
Ответ:
101075762
101417282
101588258
101645282