Пусть S — сумма всех натуральных делителей целого числа, не считая единицы и самого числа.
Пусть K — количество всех различных простых делителей целого числа, не считая самого числа.
Напишите программу, которая перебирает целые числа, превышающие 4 555 705 и не оканчивающиеся на 3, в порядке возрастания и ищет среди них такие, которые можно представить в виде суммы чисел соответствующих им значений S, K и некоторого натурального числа, оканчивающегося на 23.
В ответе запишите первые пять найденных чисел в порядке возрастания.
Ответ:
##Приведём решение на языке Python.
def f(x):
divs = []
for i in range(2, int(x**0.5)+1):
if x % i == 0:
divs.append(i)
if i != x // i:
divs.append(x // i)
primes = []
temp = x
d = 2
while d * d <= temp:
if temp % d == 0:
if d != x:
primes.append(d)
while temp % d == 0:
temp //= d
d += 1
if temp > 1 and temp != x:
primes.append(temp)
return divs, len(primes)
count = 0
for x in range(4_555_706, 6_000_000):
if x % 10 == 3:
continue
divs, K = f(x)
S = sum(divs)
N = x - S - K
if N > 0 and N % 100 == 23:
print(x)
count += 1
if count == 5:
break
Ответ: 4556054 4556805 4558124 4558712 4559054.

