Напишите программу, которая перебирает целые числа, большие 4 501 347 296, в порядке возрастания и ищет среди них числа, представленные в виде произведения ровно двух простых множителей, не обязательно различных, каждый из которых содержит ровно один раз в своей записи последовательность цифр «53».
В ответе запишите в первом столбце таблице первые пять найденных чисел в порядке возрастания, во втором столбце — для каждого из них наименьший найденный множитель для каждого из них.
Количество строк в таблице для ответа избыточно.
Правильное ли решение?
# s = set()
#
# for i in range(0, 10**4):
# n = int(f'3{str(i)[0]}1{str(i)[1:]}57')
# if n % 2023 == 0:
# print(n, n // 2023, n % 2023)
# s.add(n)
#
# print(s)
n = 4_501_347_296
c = 0
while True:
d = []
for i in range(2, round(n**0.5)+1):
if n % i == 0:
d = [str(i)] + [str(n // i)]
break
if d and ('53' in d[0] or '53' in d[1]):
c += 1
print(n, d[0], d[1])
if c == 5:
break
n += 1