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

Рассматриваются целые числа, принадлежащих числовому отрезку [416782; 498324], которые представляют собой произведение трёх различных простых делителей, оканчивающихся на одну и ту же цифру. В ответе запишите количество таких чисел и разницу между максимальным и минимальным из них. Числа запишите через пробел.

def is_prime(number): # функция для проверки простоты числа
    if number == 1: return False
    for div in range(2, int(number ** 0.5) + 1):
        if number % div == 0:
            return False
    return True


def divs(x): # функция, которая возвращает список делителей числа
    d = set()
    for i in range(2,int(x**0.5)+1):
        if x % i == 0:
            d.add(i)
            d.add(x//i)
    return sorted(d)
ans = []
for x in range(416782,498325):
    d = [i for i in divs(x) if is_prime(i)] # список, в котором хранятся только простые делители числа
    if len(d) == 3:
        if d[0] % 10 == d[1] % 10 == d[2]%10 and d[0]*d[1]*d[2] == x: # если все простые делители оканчиваются на одну цифру и их произведение равно числу
            ans += [x]
print(len(ans),max(ans)-min(ans))

Ответ: 434 81412
Оцените статью
Я решу все!