Задача к ЕГЭ по информатике на тему «делители числа» №1

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [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
Оцените статью
Я решу все!