Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用素数证明的欧几里德无穷性列出N以下的所有素数_Python_Primes_Sage - Fatal编程技术网

Python 使用素数证明的欧几里德无穷性列出N以下的所有素数

Python 使用素数证明的欧几里德无穷性列出N以下的所有素数,python,primes,sage,Python,Primes,Sage,问题是: 编写一个函数,该函数接受一个绑定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_divis

问题是:

编写一个函数,该函数接受一个绑定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
def get_primes(n):
i=2
prime_list=[]
而i
当我尝试获取素数(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
第1-1行中的
错误
回溯(最近一次呼叫最后一次):
文件“/projects/3fe731e3-2b4d-43b9-86a0-5efb4456f029/.sagemathcloud/sage_server.py”,第881行,执行中
名称空间中的exec compile(块+'\n',''single'),局部变量
文件“”,第1行,在
文件“”,第6行,在get_素数中
文件“/projects/sage/sage-6.9/local/lib/python2.7/site packages/sage/rings/arith.py”,第2538行,素数除数形式
返回[p代表p,系数(n)]
TypeError:“sage.symbol.expression.expression”对象不可编辑

看起来您的
产品在第一个事件中可能实际上不可分解。检查
prod([])+1的情况。我在火车上,要不我自己帮你查一下。另外,我不知道为什么不能只使用
min
min\u symbolic
实际上只适用于
min\u symbolic(x,x^2)
;您只是在寻找一些整数的最小值,因此内置的Python
min
应该可以正常工作。

kcrisman正确地认为错误来自使用最小符号。用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
def get_primes(n):
素数列表=[2]
i=1
而i
一大堆错误
你能更具体一点吗?哪些错误?在哪一条线上?你试着理解它们了吗?什么是
prod
min\u symbolic
prime\u除数
?请给出一个例子。@Alex.S:这些是内置的Sage函数。问题仍然应该明确指出所看到的错误,但它在标题和标签中确实提到它在Sage环境中。添加了一些澄清,谢谢提醒我!