• Предмет: Информатика
  • Автор: voskresenskayafelits
  • Вопрос задан 1 год назад

ПОМОГИТЕ НАПИСАТЬ НА ПИТОНЕ ПОЖАЛУЙСТА!!
Пусть M – сумма простых натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то значение M считается равным нулю.
Напишите программу, которая перебирает целые числа, большие 500 000, в порядке возрастания и ищет среди них такие, для которых значение 10000 < M < 50000 . Выведите первые пять найденных чисел
и соответствующие им значения M.

Формат вывода: для каждого из пяти таких найденных чисел в отдельной строке сначала выводится само число, затем – значение M (через один пробел). Строки выводятся в порядке возрастания найденных чисел.

Ответы

Ответ дал: daniilkey
0

def is_prime(n):

   if n < 2:

       return False

   for i in range(2, int(n ** 0.5) + 1):

       if n % i == 0:

           return False

   return True

def sum_prime_factors(n):

   sum = 0

   for i in range(2, n):

       if n % i == 0 and is_prime(i):

           sum += i

   return sum

def find_numbers():

   count = 0

   num = 500000

   while count < 5:

       num += 1

       M = sum_prime_factors(num)

       if 10000 < M < 50000:

           print(num, M)

           count += 1

find_numbers()

Вас заинтересует