Факторизация Числа (простые множители/делители) || Python задачи с технических собеседований

preview_player
Показать описание
Войти в IT: Вся Необходимая База. 3 Уровня Объяснения Материала

Курс: "Поколение Трансформеров": Нейросети для Естественного Языка (NLP)

Аве Кодер!
В этом видео мы будем решать простую, но между тем популярную задачу - нахождение простых множителей/делителей числа (игнорируя единицу и все, что с ней связано).

#авекодер #python #простыемножители

Поддержи проект:

BTC: 1BmLvUFiJaVpCAwhzW3ZwKzMGWoQRfxsn4
ETH: 0x6f1A488c9b12E782AEF74634a40A79b1631237aB

История Технологий:
______________________
Аве Кодер!
Меня зовут V и я кодер. Я экспортирую из Англии: актуальные туториалы, computer science, брейнхаки, лайфхаки, здоровье кодера, тревэл он нью левэл, английский для кодера, как кодеру не помереть с голоду, юмор и многое другое.
Так что ставь императорский палец вверх, подписывайся и бей в колокол!
Рекомендации по теме
Комментарии
Автор

Спасибо за объяснение! Я переписал решение с русскими названиями переменных и комментариями к коду не в виде функции, а в виде обычной программы. Мне кажется, так выглядит наглядней:

# Написать программу, раскладывающую число на простые множители.
# Запрашиваю данные у пользователя.
число = int(input("Введите целое положительное число: "))

# Создаю пустой список для хранения простых множителей числа.
простые_множители = list()
# Задаю первое значение делителя равное двум.
делитель = 2

while делитель <= число:
# Если число делится на делитель без остатка,
if число % делитель == 0:
# то добавляю его в конец списка простых множителей с помощью метода .append()

# и делю число на делитель, чтобы продолжить вычисления.
число = число / делитель
else:
# Если число не делится на делитель без остатка,
# то увеличиваю делитель на единицу и продолжаю вычисления.
делитель = делитель + 1
print(простые_множители)

mr.wisecat
Автор

Можно ещё корень из подаваемого числа взять и тогда алгоритм станет ещё быстрее, единственное проверку добавить, что если число не 1, то оно простое и его тоже надо добавить в список

from math import sqrt



def find_prime_factors(number):
factors, divider = [], 2

while divider <= int(sqrt(number)):
if not number % divider:
factors.append(divider)
number /= divider
else:
divider += 1
if number > 1:
factors.append(int(number))
return factors


И тогда временная сложность алгоритма улучшится, как и шансы на оффер :)

AndyViolence
Автор

Обязательно сначала надо решить самостоятельно, а потом уже заглядывать в решение

iritaka
Автор

180 / 45 = 4 БЕЗ ОСТАТКА!
Где оно в вашем решении?

qpdvgkg
Автор

Было бы хорошо в следующий раз упоминуть куда или где это применяется, если применяется, а то мне не понятно, к чему это можно приплести или это просто задачка

ghebodne