Задание 25. Информатика. 2023-12

Просмотры: 66
Изменено: 21 ноября 2024

Пусть \(F\) — разность максимального и минимального делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(F\) равным нулю.
Напишите программу, которая перебирает целые числа, большие \(850~000\), в порядке возрастания и ищет среди них такие, для которых значение \(F\) не равно нулю и делится нацело на \(11\). Программа должна найти и вывести первые \(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 % 11 == 0:
            print(n, F)
            k += 1
    n += 1

Ответ:
\(850018\) \(425007\)
\(850019\) \(29282\)
\(850023\) \(283338\)
\(850040\) \(425018\)
\(850062\) \(425029\)
\(850084\) \(425040\)