*(А. Сражаев) Напишите программу, которая перебирает целые числа, бóльшие \(6~700~000,\) в порядке возрастания и ищет среди них такие, у которых есть ровно пять натуральных делителей, оканчивающихся на \(29,\) либо на \(51,\) либо на \(78,\) и не равных ни самому числу, ни числу \(29,\) ни числу \(51,\) ни числу \(78.\) В ответе запишите в первой строке таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце – наибольший делитель для каждого из них.
Решение:
Python
def divisors(n):
div = []
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
div.append(i)
div.append(n // i)
return div
q = 0
n = 6_700_000
while q < 5:
n += 1
divs = divisors(n)
d = [x for x in divs if x not in (29, 51, 78) and x % 100 in (29, 51, 78)]
if len(d) == 5:
print(n, max(divs))
q += 1
Ответ:
\(6702696 \,\, 3351348\)
\(6703884 \,\, 3351942\)
\(6706602 \,\, 3353301\)
\(6707316 \,\, 3353658\)
\(6708174 \,\, 3354087\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене