Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [100812; 100923], числа, имеющие ровно 6 различных делителей. Выведите для каждого найденного числа два наибольших делителя в порядке возрастания через пробел. Формат вывода: делитель11 делитель12 делитель21 делитель22….
for i in range(100812, 100924):
ds = set() # Делители числа
for d in range(1, int(i**0.5)+1):
if i % d == 0:
ds.add(d)
ds.add(i//d)
# Если делителей уже > 6, то смысла идти дальше нет - такие числа нам не подходят
if len(ds) > 6:
break
if len(ds) == 6:
# Делаем из множества отсортированный список,
# чтобы можно было по индексам найти наибольшие делители
ds = sorted(list(ds))
print(ds[-2], ds[-1])
Ответ: 5933 100861 50438 100876 50458 100916 33639 100917