Обозначим через целую часть среднего арифметического всех простых делителей целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение
равным нулю. Напишите программу, которая перебирает целые числа, большие
, в порядке возрастания и ищет среди них такие, для которых значение
при делении на
даёт в остатке
. Выведите первые
найденных числа в порядке возрастания через пробел.
def prime(n): # функция, которая проверяет является ли число простым
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
def divs(n): # функция, которая возвращает список делителей
d = set()
for i in range(2, int(n**0.5)+1):
if n % i == 0:
d.add(i)
d.add(n//i)
return sorted(d)
counter = 0
for i in range(420001, 1000000000):
d = [x for x in divs(i) if prime(x)] # список, в котором будут простые делители текущего числа
if len(d) > 0: # если такие делители у числа есть
avg = sum(d) // len(d) # вычисляем среднее арифметическое
if avg % 42 == 24: # проверка по условию
print(i)
counter += 1
if counter == 5: # если подходящих чисел набралось 5 штук
break # прерываем выполнение программы
Ответ: 420036 420116 420119 420126 420230