Моя задача - вернуть простые множители целого числа (n). Мой вопрос: как выразить это в математическом выражении для кодирования? Я знаю, что простые числа - это числа, которые делятся только на 1 и сами, но не знают, как это сделать в коде.Способ выражения простых коэффициентов числа
Я тем не менее найти эту кодировку, которая работает, но я не знаю, почему:
def primes(n):
primfac = []
d = 2
while d*d <= n:
while (n % d) == 0:
primfac.append(d)
n //= d
d += 1
if n > 1:
primfac.append(n)
return primfac
Может кто-нибудь объяснить мне, почему это кодирование работает? Почему d
выбран как 2, чтобы начать вместо 1? Также почему он равен d
и проверяет, равен ли он или меньше n? и так далее.
'1' не является простым числом. –
Он просто пытается все числа, начиная с 2, удаляя факторы по мере их нахождения (и добавляя их в список). Они всегда будут главными, потому что перед тем, как попробовать какое-либо составное число, его факторы уже будут удалены из вашего номера. –
О, и, начиная с 1, нет смысла. Мало того, что это не простое, но вы просто получите бесконечный список из 1s в качестве факторов. Думаю об этом. –