Пусть М — сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то значение М считается равным нулю. Напишите программу, которая перебирает целые числа, большие 220 000, в порядке возрастания и ищет среди них такие, для которых значение М оканчивается на 4.
Выведите первые пять найденных чисел и соответствующие им значения М.
Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем — значение М.
Строки выводятся в порядке возрастания найденных чисел.
Количество строк в таблице для ответа избыточно.
Апробация ЕГЭ по информатике 19 февраля 2022 – задание №25
Тренировочный экзамен по информатике и ИКТ (КЕГЭ) в компьютерной форме
Решение:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def m(x): a=set() for i in range(2, int(x**0.5)+1): if x % i == 0: a.add(i) a.add(x//i) if len(a)==0: return 0 return sorted(a)[0]+sorted(a)[-1] k=0 for i in range(220_001, 500_000): if m(i)%10==4: print(i, m(i)) k += 1 if k==5: break |
Другое решение:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def m(x): f = True res = 0 for i in range(2, int(x**0.5)+1): if x % i == 0: return i + x//i return res k=0 for i in range(220_001, 500_000): if m(i)%10==4: print(i, m(i)) k+=1 if k==5: break |
Ответ:
220004 110004
220023 73344
220024 110014
220033 20014
220043 1044
