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

Найти минимальное число, большее 156239  , которое имеет ровно 60  делителей, из которых ровно 4  – простые. В ответе через пробел запишите все простые делители найденного числа в порядке возрастания.

def prime(n): # функция, которая проверяет является ли число простым
    if n == 1: return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

def divs(x): # функция возврающая список делителей числа
    d = set()
    for i in range(1,int(x**0.5)+1):
        if x % i == 0:
            d.add(i)
            d.add(x//i)
    return sorted(d)

for x in range(156239,500000):
    divisors = divs(x) # список всех делителей текущего числа
    prime_divisors = [i for i in divisors if prime(i)] # список, в котором хранятся только простые делители числа
    if len(divisors) == 60 and len(prime_divisors) == 4: # проверка по условию
        print(prime_divisors)
        break

Ответ: 2 5 17 23
Оцените статью
Я решу все!