Задача к ЕГЭ по информатике на тему «делители числа» №5

Найти на промежутке [654321,712345]  числа, у которых есть хотя бы 2  простых делителя, оканчивающихся на  7  . В ответе через пробел запишите количество найденных чисел и максимальное число делителей среди найденных чисел.

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
Оцените статью
Я решу все!