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

Просмотры: 68
Изменено: 23 ноября 2024

Пусть \(F\) — разность максимального и минимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(F\) равным нулю.

Напишите программу, которая перебирает целые числа, большие \( 850~000\), в порядке возрастания и ищет среди них такие, для которых значение \(F\) не равно нулю и делится нацело на \(7\). Программа должна найти и вывести первые \(6\) найденных чисел и соответствующие им значения \(F\).
Формат вывода: для каждого из \(6\) таких найденных чисел в отдельной строке сначала выводится само число, затем — значение \(F\).
Строки выводятся в порядке возрастания найденных чисел.

Например, для числа \(105\)    \(F = 35 - 3 = 32\).

Решение:

Python


def F(n):
    divisors = set()
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            divisors.add(i)
            divisors.add(n//i)
    if divisors:
        return max(divisors) - min(divisors)
    else:
        return 0

c = 0
i = 850001
while c < 6:
    m = F(i)
    if m and m % 7 == 0:
        print(i, m)
        c += 1
    i += 1

Ответ:
850003    121422
850005    283332
850014    425005
850028    425012
850042    425019
850047    283346