Найти числа (1 часть). №25 ЕГЭ
1 часть задач на нахождение чисел, у которых делители соответствуют заданным условиям. Решение на Python.
№A81EC7, №6D2D86
Пусть M –– сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение M равным нулю.
Напишите программу, которая перебирает целые числа, большие 452 021, в порядке возрастания и ищет среди них такие, для которых значение M при делении на 7 даёт в остатке 3. Вывести первые 5 найденных чисел и соответствующие им значения M.
Формат вывода: для каждого из 5 таких найденных чисел в отдельной строке сначала выводится само число, затем –– значение М.
Строки выводятся в порядке возрастания найденных чисел.
Например, для числа 20 М = 2 + 10 = 12.
В условии опечатка. Программа должна перебирать числа от 452 021. Это становится ясно при проверке ответа в Банке заданий ЕГЭ.
решение
Внесём изменения в функцию dividers(n), чтобы условия соответствовали задаче. В исходной программе меняем значение number (number = 452_021) и проверку m (if m % 7 == 3: return m).
Результат:
452021 | 2250 |
452025 | 150678 |
452029 | 23810 |
452034 | 226019 |
452048 | 226026 |
№9C9EF1
Напишите программу, которая перебирает целые числа, бо́льшие 500 000, в порядке возрастания и ищет среди них такие, у которых есть натуральный делитель, оканчивающийся на цифру 8 и не равный ни самому числу, ни числу 8. Вывести первые пять найденных чисел и для каждого наименьший делитель, оканчивающийся на цифру 8, не равный ни самому числу, ни числу 8.
Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем – значение наименьшего делителя, оканчивающегося на цифру 8, не равного ни самому числу, ни числу 8.
Строки выводятся в порядке возрастания найденных чисел.
вариант программы
Искать подходящий делитель будем при помощи функции divider(n). Делитель не равен восьми, при этом должен оканчиваться на 8. Значит, можно рассмотреть числа в интервале от 18 с шагом 10.
результат
500002 | 178 |
500004 | 18 |
500016 | 48 |
500018 | 58 |
500020 | 4348 |
№E90CD8
Напишите программу, которая перебирает целые числа, бо́льшие 600 000, в порядке возрастания и ищет среди них такие, у которых есть натуральный делитель, оканчивающийся на цифру 9 и не равный ни самому числу, ни числу 9. Вывести первые пять найденных чисел и для каждого минимальный делитель, оканчивающийся на цифру 9, не равный ни самому числу, ни числу 9.
Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем – значение наименьшего делителя, оканчивающегося на цифру 9, не равного ни самому числу, ни числу 9.
Строки выводятся в порядке возрастания найденных чисел.
решение
Изменения в программе предыдущей задачи:
i in range(19, n, 10)
number = 600000 + 1
Результат:
600001 | 19 |
600003 | 409 |
600005 | 49 |
600007 | 7229 |
600008 | 179 |