Напишите программу, которая перебирает целые числа, большие 600 000, в порядке возрастания и ищет среди них такие, среди делителей которых есть хотя бы одно число, оканчивающееся на 7, но не равное 7 и самому числу. Необходимо вывести первые 5 таких чисел, и наименьший делитель, оканчивающийся на 7, не равный 7 и самому числу.
Формат вывода: для каждого из 5 таких найденных чисел в отдельной строке сначала выводится само число, затем — наименьший делитель, оканчивающийся на 7, не равный 7 и самому числу. Строки выводятся в порядке возрастания найденных чисел.
Добавлено: 24.04.26 18:52
Решение на Python:
from math import isqrt
cnt = 0
for x in range(600_001, 2_000_000):
factors = []
root = isqrt(x)
if root * root == x:
factors.append(root)
for k in range(2, root):
if x % k == 0:
factors.append(k)
factors.append(x // k)
if any(str(y)[-1] == "7" for y in factors if y != 7 and y != x):
cnt += 1
print(
x,
min([y for y in factors if y != 7 and y != x and str(y)[-1] == "7"]),
)
if cnt == 5:
breakВывод программы и ответ:
600001 437
600002 47
600003 1227
600005 217
600012 16667Автор - rubygem17
None