Задача с сайта https://kpolyakov.spb.ru/
Среди целых чисел, принадлежащих числовому отрезку [268312;336492], найдите числа, которые представляют собой произведение двух различных простых делителей. Запишите в ответе количество таких чисел и минимальное из них.
def prime(x): # Функция для проверки, является ли число x простым
# Перебор возможных делителей от 2 до квадратного корня из x
for i in range(2, int(x**0.5) + 1):
# Если x делится на i без остатка, то x не простое
if x % i == 0:
return False
return x != 1 # Возвращает True, если x простое
c = 0 # Счётчик для подсчёта подходящих чисел
# Перебор чисел в диапазоне от 268312 до 336492
for x in range(268312, 336493):
# Перебор возможных делителей числа x
for i in range(2, int(x**0.5) + 1):
# Проверка условий: 1. i является делителем x; 2. i — простое число
# 3. x // i — простое число; # 4. i и x // i — разные числа
if x % i == 0 and prime(i) and prime(x // i) and i != x // i:
c += 1 # Увеличение счётчика, если все условия выполнены
print(c) # Вывод результата
Ответ: 14380 268313