Недавно я создал функцию в python, которая даст мне все факторы любого числа, которое вы выберете в python. Я хотел бы изменить его сейчас, чтобы показать только основные факторы. Функция у меня в настоящее время:Итерация снова, цикл простых факторов, python
def prime_factors(n):
L = []
i = range(1, n+1)
for x in i:
if n % x == 0:
L.append(x)
return L
Теперь, чтобы найти простые множители, я хотел бы повторно итерацию через L, и удалите все числа из L, которые при делении на любые номера до себя, остальные было бы 0.
Так что, по сути, я просто хочу взять список, который у меня есть, после того, как я его добавил, затем разделите каждое значение в списке на каждое число до номера THAT, чтобы убедиться, т делится на что-либо с остатком 0.
Я попытался:
def prime_factors(n):
L = []
i = range(1, n+1)
for x in i:
if n % x == 0:
L.append(x)
for y in L:
for x in i:
if y % x == 0:
L.remove(y)
return L
Кроме того, я не пытался разделив его на 2 различные функции ...
def prime_factors(n):
L = []
i = range(2, n)
for x in i:
if n % x == 0:
L.append(x)
return L
def prime(n):
L = prime_factors(n)
i = range(2, n)
for y in L:
for x in i:
if x % y == 0:
L.remove(x)
return L
Я попытался размещение возвращается в разных местах, я пытался листать порядок петель, независимо от того, Я не могу понять, как запустить список L через другую проверку, чтобы увидеть, если значения в нем делится на 0 ...
Ваш исходный код для списка факторов может использовать более короткий цикл. Каждый раз, когда вы находите фактор 'x', вы также нашли второй фактор' n/x'. Вы можете добавить оба в список. Это уменьшает верхний предел вашей петли. Если вы хотите, чтобы факторы были в порядке, сортируйте список в конце. – rossum