Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 是素数,定义了两个函数_Python_Jupyter Notebook - Fatal编程技术网

Python 是素数,定义了两个函数

Python 是素数,定义了两个函数,python,jupyter-notebook,Python,Jupyter Notebook,我是python新手。我有一个问题问如下 将函数lst_prime()写入: 接受一个界作为输入,它是正整数 返回小于或等于界的素数列表 我应该匹配的输出答案是: >>> lst_prime(0) [] >>> lst_prime(6) [2, 3, 5] >>> lst_prime(11) [2, 3, 5, 7, 11] 这是到目前为止我的代码 def lst_prime(n): def is_prime(m):

我是python新手。我有一个问题问如下

将函数
lst_prime()
写入:

  • 接受一个界作为输入,它是正整数
  • 返回小于或等于界的素数列表
我应该匹配的输出答案是:

>>> lst_prime(0)
[]

>>> lst_prime(6)
[2, 3, 5]

>>> lst_prime(11)
[2, 3, 5, 7, 11]
这是到目前为止我的代码

def lst_prime(n):
    def is_prime(m):
        for i in range(2, m):
            if n % i == 0:
                return True 
        return False 
    for i in range(n-1, 1, -1):
        if is_prime(i) == True: 
            return i

它没有给我正确的输出,它给了我一条错误消息,说
is\u prime
未定义。有人能帮我吗?多谢各位

更接近你的追求:

  • 跳过偶数(2除外)
  • 仅对已发现的素数执行mod操作
代码:

对我来说,这将产生:

[0,1,2,3,5,7,11,13]


问题出在
如果n%i==0:
我认为主要是这样,但是
True
False
也被触发了…您应该尝试使用
print()
语句来调试这些东西(我在那里留下了一个我的语句作为如何调试的示例),还应该使用描述性变量名(而不是
i
两次和信息量很大的
n
m
。)我想你没有意识到每次通过内部循环时都在对同一个数字进行比较。

有什么理由在
lst\u prime()中定义
Is\u prime()
?它似乎不是一个好的结构。您的代码或错误不是您正在使用/获取的代码;由于未定义
是_prime
,编写的代码不会引发错误。请提供一个(包括调用代码、异常的完整回溯、提供的输入、预期的输出等)。旁注:类似的问题(
lst_prime
)通常通过;试验除法适用于非常小的输入,但它对大输入的缩放效果很差(二次),其中Eratosthenes的缩放大致呈线性(
O(n log n)
,但足够接近)。请发布调用此函数的代码,或显示定义和/或导入此函数的交互式会话的完整成绩单。还包括整个回溯(引发异常时打印的调用堆栈转储)。
def is_prime(x, primes):
    for p in primes:
        if (x % p) == 0:
            return False
    return True


def lst_prime(n):
     primes = []
     if (n < 2):
        return primes
     primes = [2]
     for i in range(3, n+1, 2):  # n+1 so that "n" can be evaluated as prime as well
         if is_prime(i, primes):
            primes.append(i)
     return primes
>>> lst_prime(99)
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
def lst_prime(prime_number_to_make_list_for):
    def is_prime(m):
        for j in range(2, m):
            print("{} %  {}= {}".format(m, j, m % j))
            if m % j == 0:
                return False
        return True
    prime_list = []
    for i in range(0, prime_number_to_make_list_for + 1):
        if is_prime(i):
            prime_list.append(i)
    return prime_list

my_list = lst_prime(15)
print(my_list)