Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [153749; 251674] числа, у которых есть ровно 6 делителей, оканчивающихся на одну и ту же цифру. В ответ укажите количество таких чисел и через пробел целую часть среднего арифметического таких чисел.
def divs(x): # функция, которая возвращает отсортированный список делителей числа
d = set() # Множество для хранения делителей
for i in range(1,int(x**0.5)+1):
if x % i == 0:
# Добавляем делитель и парный ему в множество
d |= {i,x//i}
return sorted(d) # Возвращаем отсортированный список делителей числа x
ans = []
for x in range(153749,251675):
sm = [[] for i in range(10)]#двумерный список, в котором мы будем хранить делитель в определённых ячейках,
#в зависимости от их последней цифры
d = divs(x)
if len(d) >= 6:
for div in d:#проход по делителям числа
sm[div % 10].append(div)#распределяем делители в различные списки в зависимости от их последней цифры
for i in sm:#проход по группам делителей, оканчивающихся на одну и ту же цифру
if len(i) == 6:#если количество делителей равно 6
ans += [x]#то добавляем число
break
#вывод количества чисел и среднего арифметического таких чисел
print(len(ans),sum(ans)/len(ans))
Ответ: 7506 202960