range(1,)
- это range(0, 1)
, т.е. вы тестируете только 0
. Если вам нужен открытый диапазон, вы можете использовать, например, while
l oop с дополнительной переменной подсчета.
def wrong_prime():
i = 1
while True: # fix loop
q = 2**i-1
if isprime(i) and isprime(q) == False:
return i # return p, not print q
i += 1 # remember to increment manually
или использовать next
с itertools.count
:
import itertools
def wrong_prime():
return next(p for p in itertools.count(1) if isprime(p) and not isprime(2**p-1))
(Конечно, учитывая «подсказку», вы также можете просто использовать range(10, 16)
)
Также обратите внимание, что функция должна return
значение p
, тогда как ваша отпечатков q
. Для тестирования позвоните по номеру print(wrong_prime())
, чтобы увидеть значение.