Задание 25. Информатика. 2023-6
- Просмотры: 73
- Изменено: 22 ноября 2024
Пусть \(M\) — разность максимального и минимального делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(M\) равным нулю.
Напишите программу, которая перебирает целые числа, большие \(860~000\), в порядке возрастания и ищет среди них такие, для которых значение \(M\) оканчивается на \(30\). Вывести первые пять найденных чисел и соответствующие им значения \(M\).
Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем — значение \(M\).
Строки выводятся в порядке возрастания найденных чисел.
Например, для числа \(20\) \(M = 10-2=8\).
Решение:
Python
def min_divisor(n):
for x in range(2, int(n**0.5) + 1):
if n % x == 0:
return x
return 1
k = 0
n = 860001
while k < 5:
md = min_divisor(n)
if md > 1:
M = n // md - md
if M % 100 == 30:
print(n, M)
k += 1
n += 1
Ответ:
\(860064\) \(430030\)
\(860199\) \(286730\)
\(860264\) \(430130\)
\(860464\) \(430230\)
\(860499\) \(286830\)