Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [;
], числа, имеющие ровно
различных нечётных натуральных делителей. Для каждого числа выведите все эти семь делителей на экран (для каждого числа с новой строки).
a = 198374 # Задаю границы цикла
b = 295381
for i in range(a, b + 1):
divs = [] # Массив, в который будем сохранять подходящие делители
counter = 0 # Счетчик делителей числа
for j in range(1, int(i**0.5) + 1):
if i % j == 0:
if j % 2 == 1: # Если делитель нечетный, он подходит
divs.append(j) # Сохраняем делитель
counter += 1
# Если дополняющий делитель нечетный
# и мы его еще не добавили, то он подходит
if i//j % 2 == 1 and j != i//j:
divs.append(i//j)
counter += 1
# Оптимизируем прогу, выпрыгиваем из чисел с большим числом делителей
if counter > 8:
break
if counter == 7:
# Выводим делители в порядке возрастания без []
print(*(sorted(divs)))
b = 295381
for i in range(a, b + 1):
divs = [] # Массив, в который будем сохранять подходящие делители
counter = 0 # Счетчик делителей числа
for j in range(1, int(i**0.5) + 1):
if i % j == 0:
if j % 2 == 1: # Если делитель нечетный, он подходит
divs.append(j) # Сохраняем делитель
counter += 1
# Если дополняющий делитель нечетный
# и мы его еще не добавили, то он подходит
if i//j % 2 == 1 and j != i//j:
divs.append(i//j)
counter += 1
# Оптимизируем прогу, выпрыгиваем из чисел с большим числом делителей
if counter > 8:
break
if counter == 7:
# Выводим делители в порядке возрастания без []
print(*(sorted(divs)))
Ответ: 1 7 49 343 2401 16807 117649 1 5 25 125 625 3125 15625