Python 是素数,定义了两个函数
我是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):
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操作
问题出在
如果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)