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

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [768900; 769500], числа, имеющие ровно 10 различных делителей. В ответе для каждого найденного числа запишите два его наибольших делителя в порядке возрастания через пробел.

Пример ввода ответа: делитель1.1 делитель1.2 делитель2.1 делитель2.2 …

for i in range(768900, 769501):
    ds = set() # Делители числа
    for d in range(1, int(i**0.5)+1):
        if i % d == 0:
            ds.add(d)
            ds.add(i//d)
        # Если делителей уже > 10, то смысла идти дальше нет - такие числа нам не подходят
        if len(ds) > 10:
            break
    if len(ds) == 10:
        # Делаем из множества отсортированный список,
        # чтобы можно было по индексам найти наибольшие делители
        ds = sorted(list(ds))
        print(ds[-2], ds[-1])

Ответ: 384584 769168 256419 769257 384632 769264 153875 769375 384728 769456
Оцените статью
Я решу все!