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

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

def count_del(x):
 
    ans = [1, x]
 
    for i in range(2, int(x**0.5)+1):
 
        if x % i == 0:
 
            ans += [i]
 
            if i != x // i:
 
                ans += [x//i]
 
        if len(ans) > 128:
 
            return ans
 
    return ans
 
for i in range(101010101, 1010101-1, -1):
 
    if len(count_del(i)) == 128 and i % 16 == 0:
 
        print(i)
 
        print(*sorted([i for i in count_del(i) if i % 2 != 0]))
 
        break

Ответ: 101008512 1 3 9 11 27 33 99 297 2657 7971 23913 29227 71739 87681 263043 789129
Оцените статью
Я решу все!