Задание 25. Информатика. 2023-13
- Просмотры: 64
- Изменено: 24 ноября 2024
Пусть \(F\) — разность максимального и минимального делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(F\) равным нулю.
Напишите программу, которая перебирает целые числа, большие \(850~000\), в порядке возрастания и ищет среди них такие, для которых значение \(F\) не равно нулю и делится нацело на \(13\). Программа должна найти и вывести первые \(6\) таких чисел и соответствующие им значения \(F\).
Формат вывода: для каждого из \(6\) таких найденных чисел в отдельной строке сначала выводится само число, затем — значение \(F\).
Строки выводятся в порядке возрастания найденных чисел.
Например, для числа \(105\) \(F = 35-3=32\).
Решение:
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 = 850001
while k < 6:
md = min_divisor(n)
if md > 1:
F = n // md - md
if F and F % 13 == 0:
print(n, F)
k += 1
n += 1
Ответ:
\(850022\) \(425009\)
\(850048\) \(425022\)
\(850053\) \(283348\)
\(850074\) \(425035\)
\(850099\) \(7410\)
\(850100\) \(425048\)