Тип 25 № 79738 
Обработка целочисленной информации. Нахождение делителей
i
Пусть R — сумма всех различных натуральных делителей целого числа.
Напишите программу, которая перебирает целые числа, бо́льшие 500 000, в порядке возрастания и ищет среди них такие, для которых значение R оканчивается на цифру 6. В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце — пять соответствующих этим числам значений R.
Например, для числа 20R = 1 + 2 + 4 + 5 + 10 + 20 = 42.
Количество строк в таблице для ответа избыточно.
Решение. Приведём решение на языке Python.
count = 0
for x in range(500000, 10**6):
s={x}
for y in range(1, int(x**0.5)+1):
if x % y == 0:
s|={y, x//y}
s = sorted(s)
R = sum(s)
if R % 10 == 6:
print(x, R)
count += 1
if count == 5:
break
Ответ:
500032 1070356
500035 606816
500039 501456
500050 949716
500052 1333696
Приведём решение Юрия Красильникова на языке Python.
count = 0
n = 500001
while count < 5:
s=0
k=1
while k**2 <= n:
if n % k == 0:
s += k
if n//k > k:
s += n//k
k += 1
if s % 10 == 6:
print(n, s)
count += 1
n += 1
Ответ: 500032&1070356&500035&606816&500039&501456&500050&949716&500052&1333696
79738
500032 1070356 500035 606816 500039 501456 500050 949716 500052 1333696