Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
Напишите программу, которая перебирает целые числа, большие 1 324 727, в порядке возрастания и ищет среди них числа, представленные в виде произведения ровно двух простых множителей, не обязательно различных, каждый из которых содержит в своей записи ровно одну цифру 5.
В ответе в первом столбце таблицы запишите первые 5 найденных чисел в порядке возрастания, а во втором столбце — для каждого из чисел наибольший из соответствующих им найденных множителей.
from math import isqrt
def contains_5(num):
return str(num).count('5') == 1
def is_prime(num):
if num < 2:
return False
if num == 2:
return True
if num % 2 == 0:
return False
if num == 3:
return True
if num % 3 == 0:
return False
for div in range(5, isqrt(num) + 1, 6):
if num % div == 0 or num % (div + 2) == 0:
return False
return True
def f(num):
for i in range(2, isqrt(num) + 1):
if num % i == 0:
j = num // i
if contains_5(i) and contains_5(j) and is_prime(i) and is_prime(j):
return max(i, j)
return None
cnt = 0
for i in range(1_324_729, 10 ** 20):
if M := f(i):
print(i, M)
cnt += 1
if cnt == 5:
break
