Найдите 5 чисел больших 500000, таких, что среди их делителей есть число, оканчивающееся на 8, при этом этот делитель не равен 8 и самому числу. В качестве ответа приведите 5 наименьших чисел, соответствующих условию. Источник: ссылка |
Сперва мы создали функцию, которая ищет в числе первый делитель, оканчивающийся на 8. Так как нам не подходит 8, цикл можно начать с 18-и. Так как поиск мы начинаем с меньшего, то оно уже автоматически будет находиться в порядке возрастания. Из-за того поиск делителя у нас идёт с наименьшего подходящего и в итоге мы возвращаем первый попавшийся, это значит, он и будет минимальным.
Последняя цифра в числе равна остатку от деления этого числа на 10, то есть108 % 10 = 8
. Последние 2 цифры числа соответственно равны остатку от деления его на 100. То есть: сколько нулей в делителе, столько и цифр в конце.#Функция для поиска подходящих делителей
def divs(x):
for i in range(18, x):
#Делится ли нацело?
if x % i == 0:
#Заканчивается ли на 8?
if i % 10 == 8:
return i
#Если подходящих делителей не нашлось,
#возвращаем 0
return 0
k = 0
#Перебираем числа большие 500000
for i in range(500001, 10**10):
div = divs(i)
#Если делитель не равен 0
#(то есть он нашёлся)
if div != 0:
print(i, div)
k+=1
if k == 5:
break