Назовем число добрым, если среди его делителей есть хотя бы три квадрата простых чисел. Найти 5 минимальных добрых чисел, больших . В ответе запишите найденные числа через пробел в порядке возрастания.
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)
count = 0
for x in range(21318,100000):
d = [i for i in divs(x) if int(i**0.5) == i**0.5 and prime(i**0.5)] # список, в котором хранятся только квадраты простых делителей числа
if len(d) >= 3:
print(x)
count += 1
if count == 5:
break
Ответ: 21600 21780 22050 22500 22932