Найдите максимальное число, имеющее ровно 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
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