293просмотров
12.4%от подписчиков
26 марта 2026 г.
stats📷 ФотоScore: 322
Без этого НЕ РЕШИТЬ задание 25 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ И это оптимальный поиск делителей, который нужно понимать и уметь писать Если искать делители «в лоб», то это выглядит как-то так: def allDivs(n): divs = [] for d in range(1, n+1): if n % d == 0: divs.append(d) return sorted(divs) Вроде все ок, но начиная с 10^8 эта функция уже работает долго, а для 10^9 вообще не выводит результат Будем решать через через перебор до √n, обратимся к математике: Если число n делится на d, то автоматически есть парный делитель n // d, так как n = d * n//d Например: • 36 делится на 3 → второй делитель 12 • 36 делится на 6 → второй делитель тоже 6 (но это не разные делители, а один и тот же, обращаем на это внимание) ➡️ Все делители идут парами, и один напарник всегда ≤ √n. Соответственно искать делители можно от 1 до √n и добавлять их сразу парами, тогда все работает быстро Полный код функции с комментариями написала на карточке, сохраняй ❤️
293
просмотров
1046
символов
Нет
эмодзи
Да
медиа

Другие посты @insperia_info

Все посты канала →
Без этого НЕ РЕШИТЬ задание 25 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀ — @insperia_info | PostSniper