Я новичок в Python и работаю над одной проблемой, которую не могу решить.
Что я должен делать: создать список кортежей с простыми числами, диапазон состоит из двух чисел (которые также являются простыми числами), и кортежи вэтот список должен содержать только 2 простых числа p и p + 2
Например, : заданный диапазон (11, 31), возвращенный список = [(11,13), (17, 19), (29, 31)]
Это мой код
def twin_primes(a: int, b:int) -> List[Tuple[int, int]]:
list_primes = []
list_final = []
for val in range (a, b+1):
if val > 1 :
for n in range(2, val):
if (val % n) == 0:
break
else:
list_primes.append(val)
for val in list_primes:
print(val)
list_final.append((list_primes[val], list_primes[val + 2]))
return list_final
print(twin_primes(11,31))
в первом цикле я определяю, какие числа в этом диапазоне простые и добавляютсяих в list_primes
во втором цикле я пытался взять простые числа из list_primes
и добавить их как кортежи в list_final
, это говорит мне следующее:
list_final.append ((list_primes [val], list_primes [val + 2]))
IndexError: индекс списка вне диапазона *
Может кто-нибудь, пожалуйста, помогите мне сэто? Я думаю, что понимаю эту ошибку, но я не знаю, как исправить код, поэтому он просто берет p
, p+2
в один кортеж, а затем потребуется другая пара и так далее ... также он должен игнорировать23, хотя это простое число.