【发布时间】:2019-07-30 08:22:32
【问题描述】:
这个问题需要我编写一个函数,它从给定函数的输出中编译一个素数列表,该函数给出 2 个列表,一个从 2 到任意数字的数字列表和第二个与第一个具有“真”或“假”值的列表取决于第一个列表中的数字是否为素数。
我不知道我的代码在回答问题时是否根本错误,或者我是否在正确的轨道上并且只是犯了一个错误......
任何帮助将不胜感激。
问题:
编写一个接受单个输入 N 的函数(称为 primes_list)。该函数必须使用 prime_sieve 函数来计算并返回一个仅包含小于或等于 N+1 的素数的数组(或列表)。
例如,如果 N=8,此函数应返回 [2,3,5,7]
给定的代码:
import numpy as np
def prime_sieve(N):
nums = np.arange(2, N+2, 1)
mask = []
for n in nums:
mask.append(True)
for n in nums:
for i in np.arange(2*n-2, N, n):
mask[i] = False
return nums, np.array(mask)
numbers, mask = prime_sieve(8)
print(numbers)
print(mask)
[2 3 4 5 6 7 8 9]
[ True True False True False True False False]
我的代码:
import numpy as np
def primes_list(N):
numbers, mask = prime_sieve(N)
primes = []
for n in numbers:
if mask[n] == "true":
primes.append(numbers[n])
return primes
print(primes_list(8))
但这会报错:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-60-4ea4d2f36734> in <module>
----> 2 print(primes_list(8))
<ipython-input-59-a5080837c5c8> in primes_list(N)
6 primes = []
7 for n in numbers:
----> 8 if mask[n] == "true":
9 primes.append(numbers[n])
10 return primes
IndexError: index 8 is out of bounds for axis 0 with size 8
【问题讨论】:
标签: python numpy index-error