Напишите программу, которая перебирает целые числа, большие 4 000 000, в порядке возрастания и ищет среди них числа, представимые в виде произведения ровно двух простых множителей, не обязательно различных, каждый из которых содержит в своей записи либо цифру 1, либо цифру 2. В ответе в первом столбце таблицы запишите первые 5 найденных чисел в порядке возрастания, а во втором столбце — для каждого числа наибольший из соответствующих им найденных множителей. Количество строк в таблице для ответа избыточно.
Решение:
Решение на Python:
def pr(x):
for i in range(2, int(x**0.5)+1):
if x % i == 0: return False
return True
def d(x):
dels = []
for i in range(2, int(x**0.5)+1):
if x % i == 0:
dels.append(i)
dels.append(x//i)
return dels
for x in range(4000001, 100000000):
dels = d(x)
delsp = [d for d in dels if pr(d)]
if len(delsp) == 2:
if delsp[0]*delsp[1] == x:
if (str(delsp[0]).count('1') > 0)+(str(delsp[0]).count('2') > 0) == 1:
if (str(delsp[1]).count('1') > 0)+(str(delsp[1]).count('2') > 0) == 1:
print(x, max(dels))
Ответ:
| 4000001 | 97561 |
| 4000006 | 2000003 |
| 4000013 | 210527 |
| 4000021 | 2221 |
| 4000027 | 2251 |
Ответ: