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

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [198374  ; 295381  ], числа, имеющие ровно 7  различных нечётных натуральных делителей. Для каждого числа выведите все эти семь делителей на экран (для каждого числа с новой строки).

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)))

Ответ: 1 7 49 343 2401 16807 117649 1 5 25 125 625 3125 15625
Оцените статью
Я решу все!