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

Найдите пять последних натуральных чисел на отрезке [1010101;101010101]  , которые имеет ровно 64  делителя. В ответе укажите подходящие числа в порядке возрастания через пробел.

def count_del(x): # функция, которая проверяет 64 делителя ли у числа
    count = 2
    for i in range(2, int(x**0.5)+1):
        if x % i == 0:
            count += 1
            if i != x // i:
                count += 1
        if count > 64: # для оптимизации выходим из функции если кол-во делителей больше 64
            return False
    return count == 64 # проверка, что у числа 64 делителя
ans = []
for i in range(101010101, 1010101-1, -1): # для оптимизации делаем перебор от большего к меньшему
    if count_del(i):
        ans += [i]
    if len(ans) == 5:
        print(*sorted(ans))
        break

Ответ: 101009928 101009937 101009958 101010024 101010090
Оцените статью
Я решу все!