Найти на промежутке числа, у которых есть хотя бы
простых делителя, оканчивающихся на
. В ответе через пробел запишите количество найденных чисел и максимальное число делителей среди найденных чисел.
def prime(x): # функция, которая проверяет является ли число простым
if x == 1:return False
for i in range(2,int(x**0.5)+1):
if x % i == 0:
return False
return True
def divs(x): # функция возврающая список делителей числа
d = set()
for i in range(1,int(x**0.5)+1):
if x % i == 0:
d.add(i)
d.add(x//i)
return sorted(d)
count = 0
mx = 0
for x in range(654321,712346):
d = [i for i in divs(x) if prime(i) and i % 10 == 7] # список, в котором хранятся простые делители числа, оканчивающиеся на 7
divisors = divs(x)
if len(d) >= 2: # если таких делителей хотя бы 2
count += 1 # увеличиваем счётчик
mx = max(mx,len(divisors)) #обновляем максимальное кол-во делителей числа
print(count,mx)
Ответ: 5055 192