Reason
為什麼我要記錄這個問題,因為之前面試的時候遇到過,當時自己寫的演算法不好,所以,在此記錄一下
Answer
程式碼是基於python3寫的(人生苦短,寫演算法請用python,web的話請用php ^_^)
def prime(n):
l = []
while n > 1:
for i in range(2, n + 1):
if n % i == 0:
n = int(n / i)
l.append(i)
break
return l
print(prime(1020)) # [2, 2, 3, 5, 17]
Explanation
從最小質數2開始,如果num能被i整除,則num = num / i,不能則i += 1
這裡你可能有疑問,如果一個數被6整除了呢,那麼它加入這個list不久不對了嘛?
但是你應該意識到,被6能整除,它肯定被它的質數整除了,我們是從最小質數開始的