Да, ошиблись в 25м. Ограничение < N позволяет проверять делители до корня! Считает моментально. found = 0 for i in range(200000001, 300000000): mul = 1 n = 0 for k in range(2, int(i ** .5)): if i % k == 0: n += 1 mul *= k if n == 5 or n == 4 and i ** .5 == int(i ** .5): if mul < i: print(i, mul) found += 1 break if found == 5: break
В 25-ом номере ошибка: нужно добавить проверку q
можно пойти до корня в поиске делителей, т.е int(n) ** 0.5
@@ch1ba407 Да, так будет оптимальнее👌 исправила
в 25 ведь нужно было проверить чтоб m < n было, а у вас слишком большие m
Точно, спасибо!
Не заметила это условие
Верный ответ и программу оставляю в закрепе в комментариях
Да, ошиблись в 25м.
Ограничение < N позволяет проверять делители до корня! Считает моментально.
found = 0
for i in range(200000001, 300000000):
mul = 1
n = 0
for k in range(2, int(i ** .5)):
if i % k == 0:
n += 1
mul *= k
if n == 5 or n == 4 and i ** .5 == int(i ** .5):
if mul < i:
print(i, mul)
found += 1
break
if found == 5:
break
И правда, логично, если произведение делителей меньше числа, то делители не более корня из числа.
Отличное решение!)