Задание 25. Информатика. 2022-8
- Просмотры: 64
- Изменено: 24 ноября 2024
Пусть \(F\) — разность максимального и минимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(F\) равным нулю.
Напишите программу, которая перебирает целые числа, большие \( 850~000\), в порядке возрастания и ищет среди них такие, для которых значение \(F\) не равно нулю и делится нацело на \(11\). Программа должна найти и вывести первые \(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 % 11 == 0:
print(i, m)
c += 1
i += 1
Ответ:
850018 425007
850019 29282
850023 283338
850040 425018
850062 425029
850084 425040