Проблема требует, чтобы я написал функцию, которая составляет список простых чисел из выходных данных данной функции, которая дает 2 списка, один список чисел от 2 до произвольного числа и второй список, который соответствует числам в первый список со значениями «истина» или «ложь» в зависимости от того, являются ли числа в первом списке простыми или нет.
Я понятия не имею, является ли мой код просто ошибочным, чтобы ответить на вопрос, или я на правильном пути и только что сделал ошибку ...
Любая помощь будет очень признательна.
Вопрос:
Напишите функцию (называемую primes_list), которая принимает один вход N. Эта функция должна использовать функцию 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