Найдите все натуральные числа, принадлежащие отрезку [22333; 88999], у которых ровно различных нечётных делителя (количество чётных делителей может быть любым). В ответе укажите количество данных чисел.
n = set() # Подходящие числа
for x in range(22333, 89000):
ds = set() # Делители числа
for d in range(1, round(x**0.5)+1):
# Рассматриваем парные множители
if x % d == 0:
if d % 2 != 0:
ds.add(d)
if (x//d) % 2 != 0:
ds.add(x//d)
# Если делителей уже больше 3, то прекращаем работу цикла - такие числа нам не подходят
if len(ds) > 3:
break
if len(ds) == 3:
n.add(x)
print(len(n))
Ответ: 106