Статья Автор: Лебедев Дмитрий

(The Last Inch) КЕГЭ- 25. Модель решения

Задание 25 

Для решения задания потребуется умение проверять число на простату и умение определять все делители числа.
Будем использовать программу mindel, которая будет возвращать минимальный простой делитель числа и поиск делителей числа. 


def mindel(n):
    if n % 2 == 0 : return 2
    if n < 9 : return n
    d = 1
    while d * d < n :
        d += 2
        if n % d == 0 : return d
    return n    

Программа mindel возвращает минимальный простой делитель для всех чисел больших 1.
Число будет простым, если
mindel(n) == n.
Теперь несложно составить всю программу (приведем "наивное" решение - усовершенствование поиска всех делителей)


 


Решение можно ускорить, если провести "факторизацию" - сохраняя только простые делители.
Кроме уменьшения времени работы в 15 раз,  снижается вероятность ошибки:
- в первом решении можно допустить логическую ошибку - посчитать, что минимальный простой делитель меньше корня из N (это верно), а максимальный не меньше корня из N (а это неверно - смотри результаты работы программы)



Задача 25 (19779)
Среди чисел больших 55 000 000, найдите такие, что среди их простых делителей есть число, оканчивающееся на 777, при этом не равное самому числу.
В качестве ответа приведите 4 наименьших числа, соответствующих условию.
Формат вывода: для каждого из 4 таких найденных чисел в отдельной строке сначала выводится само число, затем минимальный простой делитель, оканчивающийся на 777, не равный самому числу.
Количество строк для записи ответа избыточно.



Печать