25

25


Пусть M - разность максимального и минимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение M равным нулю. Напишите программу, которая перебирает целые числа, большие 750 000, в порядке возрастания и ищет среди них такие, для которых значение M не равно нулю и оканчивается на 7. Программа должна найти и вывести первые 5 таких чисел и соответствующие им значения M. Формат вывода: для каждого из 5 таких найденных чисел в отдельной строке сначала выводится само число, затем значение M. Строки выводятся в порядке возрастания найденных чисел. Например, для числа 105 M = 35 - 3 = 32.

for n in range(750_001, 1_000_000+1):
  m = 0
  k = []
  for d in range (1,n):
    if n%d==0:
      k.append(d)
  if len(k)>=2: m = max(k) - min(k)
  if m != 0 and m%10==7:
    print(n, m)

это решение эффективнее:

cnt = 0

for n in range(750_001, 1_000_000+1):

  m = 0

  for d in range(2,round(n**0.5) +1 ): - проверка на простые числа

    if n%d==0:

      m = n//d - d

      break

  if m != 0 and m%10==7:

    cnt +=1

    print (n,m)

    if cnt == 5:

      break

     Пусть S - сумма различных натуральных делителей целого числа, являющихся простыми числами, не считая самого числа. Напишите программу, которая перебирает целые числа, большие 450 000, в порядке возрастания и ищет среди них такие, для которых значение S кратно 17 и не равно 0. Программа должна найти и вывести первые 4 таких числа и соответствующие им значения S.

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

Например, для числа 20 S = 2 + 5 = 7.


def f(n):

  ok = True

  for d in range(2, round(n**0,5)+1):

    if n%d == 0:

      ok = False

  return ok


cnt = 0 

for n in range(450_001, 500_001):

  s=0

  for d in range(2, round(n**0.5)+1):

    if n%d==0:

      if f(d):

        s+=d

    if f(n//d):

      s += n//d

  if s%17==0 and s !=0:

    cnt +=1

    print(n, s)

  if cnt==4:

    break

       

Report Page