Найти на промежутке числа, у которых все нетривиальные делители — простые или отсутствуют. В ответе через пробел запишите количество подходящих чисел и максимальное из них через пробел.
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 okay(n): # Все ли нетривиальные делители числа простые?
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
if not prime(i): # Если встретили непростой делитель,
return False # то число не подходит
if n // i != i:
if not prime(n // i):
return False
return True
counter, maxim = 0, 0
for i in range(12524, 15422):
if okay(i):
counter += 1
if i > maxim:
maxim = i
print(counter, maxim)
if n == 1: return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def okay(n): # Все ли нетривиальные делители числа простые?
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
if not prime(i): # Если встретили непростой делитель,
return False # то число не подходит
if n // i != i:
if not prime(n // i):
return False
return True
counter, maxim = 0, 0
for i in range(12524, 15422):
if okay(i):
counter += 1
if i > maxim:
maxim = i
print(counter, maxim)
Ответ: 1010 15421