Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [52112;623122], числа, имеющие ровно 3 различных делителя, которые являются квадратами простых чисел. Программа должна вывести количество таких чисел.
def prime(n): # функция, которая проверяет, что число - простое
if n > 1:
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
return False
def divs(x): # функция возврающая список делителей числа
d = set()
for i in range(2,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(52112,623123):
d = [i for i in divs(x) if int(i**0.5) == i**0.5 and prime(i**0.5)] # список, в котором хранятся только квадраты простых делителей числа
if len(d) == 3:
count += 1
print(count)
Ответ: 1843