2015-10-19 40 views
0

這裏的歐幾里得無限是這樣的問題:下面的清單N的所有素數使用素證明

寫一個接受結合的N-的功能,並且如由無限的古典證明確定找到的第一N 素數質數的集合 。即:以P = {2}開始;然後形成m,其總和爲 1與P的所有元素的乘積。將m的最小素數 乘以P並重復。

這裏是我做過什麼:

def get_primes(n): 
    i = 2 
    prime_list = [] 
    while i < n: 
     p = prod(prime_list)+1 
     r = min_symbolic(prime_divisors(p)) 
     prime_list.append(r) 
     i = i+1 
    return prime_list 

它給了我一串ERRS的,當我試圖get_primes(10),我怎麼錯在這裏做什麼?我剛開始學習python,謝謝。

編輯:對不起,我沒有說清楚,這裏是我得到

Error in lines 1-1 
Traceback (most recent call last): 
File "/projects/3fe731e3-2b4d-43b9-86a0-5efb4456f029/.sagemathcloud/sage_server.py", line 881, in execute 
exec compile(block+'\n', '', 'single') in namespace, locals 
File "", line 1, in <module> 
File "", line 6, in get_primes 
File "/projects/sage/sage-6.9/local/lib/python2.7/site-packages/sage/rings/arith.py", line 2538, in prime_divisors 
return [p for p,_ in factor(n)] 
TypeError: 'sage.symbolic.expression.Expression' object is not iterable 
+3

'bunch of errs' can you be more specific?哪些錯誤?在哪一行?你有沒有試着去理解它們? – oliverpool

+1

什麼是'prod','min_symbolic'和'prime_divisors'?請給[MCVe](http://stackoverflow.com/help/mcve)。 – Psytho

+1

@ Alex.S:這些都是內置的Sage功能。這個問題應該仍然指出所看到的錯誤,但它確實在標題和標籤中提到它在Sage環境中。 – DSM

回答

0

錯誤看起來像你的prod可能不是在第一個事件實際上可分解。檢查prod([])+1會發生什麼情況。我正在火車上,否則我會自己檢查一下。此外,我不知道爲什麼你不能只使用min,min_symbolic是真的只爲min_symbolic(x,x^2);你只是尋找一些整數的最小值,所以內置的Python min應該(?)工作正常。

0

kcrisman是正確的錯誤來自於使用min_symbolic。用min代替它可以消除錯誤,但代碼仍需要調整一下,才能得到前n個素數:

def get_primes(n): 
    prime_list = [2] 
    i = 1 
    while i < n: 
     p = prod(prime_list) + 1 
     r = min(prime_divisors(p)) 
     prime_list.append(r) 
     i = i + 1 
    return prime_list