Найти минимальное число, большее , которое имеет ровно
делителей, из которых ровно
– простые. В ответе через пробел запишите все простые делители найденного числа в порядке возрастания.
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