[英]Compute prime factors in python
我目前有一個包含數字的列表:
lst = [3,4,6]
我正在嘗試計算列表中數字的素因數,在那里我獲得了
3^1
2^2
2^1 x 3^1
這是我嘗試過的:
def prime_factors(lst):
for j in range(len(lst)):
i = 2
factors = []
while i*i <= j:
if j%i:
i+=1
else:
j//= i
factors.append(i)
if j > 1:
factors.append(j)
return factors
但我得到 [2] 作為輸出。 將不勝感激在這方面的一些幫助。
好吧,我從頭開始,它使用了質數篩算法的修改。
from math import sqrt
from collections import Counter
def prime_factors(lst):
maximumnumber=max(lst)
primesieve=[0]*(maximumnumber+1)
primesieve[0]=1
primesieve[1]=1
#DOING PRIME NUMBER SIEVE
for i in range(2,int(sqrt(maximumnumber))+1):
if(primesieve[i]==0):
for j in range(2*i,len(primesieve),i):
primesieve[j]=i
for j in range(len(lst)):
num=lst[j]
factors=[]
#take each number(num) and divided it by a prime number (primesieve[num])
#do it until you find no more prime factors for number
while(primesieve[num]>0):
factors.append(primesieve[num])
num=num//primesieve[num]
factors.append(num)
yield Counter(factors)
for i in prime_factors([3,4,6]):
print(i)
輸出
Counter({3: 1})
Counter({2: 2})
Counter({2: 1, 3: 1})
我會解釋我做了什么
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.