2017-03-06 57 views
-1
n = 600851475143 
i = 2 

while i * i < n: 
    while n%i == 0: 
     n = n/i 
    i = i + 1 

print (n) 

這是一個在python中查找任何給定數字的最大素數因子的程序。我想知道是否有辦法對其進行修改,以便能夠找到所有主要因素,而不僅僅是最大的因素。我在想,因爲這個程序是快速和整潔的,有沒有辦法添加幾行代碼來改變它,我需要什麼,這些都是主要因素?用於素數分解任何給定數的程序

+0

你問的是如何改變它,所以'n'可以是任何數字? – Carcigenicate

+1

你到目前爲止嘗試過什麼?創建一個列表應該很簡單,只要n除以n就可以加上'i'。 –

回答

2

下面是一個簡單的程序因素整數:

Python 2.7.5+ (default, Sep 17 2013, 15:31:50) 
[GCC 4.8.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> def factors(n): 
...  f, fs = 2, [] 
...  while f * f <= n: 
...   if n % f == 0: 
...    fs.append(f) 
...    n = n/f 
...   else: 
...    f = f + 1 
...  fs.append(n) 
...  return fs 
... 
>>> factors(600851475143) 
[71, 839, 1471, 6857] 

有更好的方法來因素的整數,但是這足以讓你開始。如果您對使用素數編程感興趣,我會在我的博客上謙虛地推薦this essay

相關問題