Вы используете этот код для распечатки значений:
for p in range (5):
print p,
Если вы посмотрите на это, он печатает значения диапазона.Вы, вероятно, хотите напечатать вещи из основного итератора.itertools
имеет несколько функций, которые могут помочь:
for prime in itertools.islice(p, 5):
print prime,
Кроме того, вы можете рассмотреть возможность использования генератора:
def primes():
current = 1
while True:
current += 1
while True:
for i in xrange(2, current // 2 + 1):
if current % i == 0:
current += 1
break
else:
break
yield current