Разбираем код как конструктор: ищем числа с “правильными” простыми множителями
Что делает программа? 🤔
Ищет первые 5 чисел > 1 760 906, которые — произведение двух простых множителей (могут совпадать), причём в записи каждого множителя ровно одна цифра «1». Выводит число и больший множитель.
Ключевые блоки кода 🧩1. Подготовка списка подходящих простых чисел
prost=[]
k=0
def pr(n):
for i in range(2,int(n**0.5)+1):
if n%i==0: return False
return True
for x in range(2,1_760_906+1):
if pr(x) and str(x).count("1")==1: prost.append(x)
pr(n) — функция проверки числа на простоту. Она перебирает делители от 2 до квадратного корня из n. Если хоть один делит n без остатка — число не простое. Иначе — простое ✅.
Далее идёт цикл от 2 до 1 760 906. Для каждого числа проверяется:
💡является ли оно простым (pr(x));
💡содержит ли в своей десятичной записи ровно одну цифру «1» (str(x).count("1") == 1).
Если оба условия выполняются — число добавляется в список prost.
⚠️ Важный нюанс: мы заранее собираем все подходящие простые числа до стартовой границы поиска. Это нужно, чтобы потом быстро проверять, являются ли множители искомых чисел «правильными».
2. Поиск нужных составных чисел
for n in range(1_760_907,10**9):
a=set()
for x in range(2,int(n**0.5)+1):
if n%x==0:
if x in prost: a.add(x)
if n//x in prost: a.add(n//x)
Перебираем числа n, начиная с 1 760 907 (первое число больше 1 760 906) и до миллиарда (это просто «запасной» верхний предел).
💡 Почему set()? Чтобы избежать дубликатов (например, если оба множителя одинаковые — как в случае
p × p).
3. Проверка условия «произведение ровно двух простых множителей»
if len(a)>0:
mx=0
for x in a:
for y in a:
if x*y==n:
mx=max(mx,x,y)
if mx!=0:
print(n,mx)
k+=1
if k==5: break
Хочешь прокачивать навыки в решении задач по информатике и разбирать код без «воды»? 😎
Подписывайся на канал — там регулярно выкладываю:
* разбор типовых и олимпиадных задач;
* лайфхаки по оптимизации кода;
* готовые шаблоны решений на Python.
Жми кнопку «Подписаться» — и не пропускай новые разборы! 👇#ЕГЭ #РазборЗадач #ПодготовкаКЕГЭ #ФИПИ_3659c9 #ЕГЭ_Задание25 #Алгоритмы #PythonДляЕГЭ #ИнформатикаСНуля