a.py:
def all():
n = 2
while True:
yield n
n = n + 1
y = all()
number = next(y)
print(number)
y = filter(lambda x: x % number != 0, y)
number = next(y)
print(number)
y = filter(lambda x: x%3 != 0, y)
print(next(y))
y = filter(lambda x: x%5 != 0, y)
print(next(y))
y = filter(lambda x: x%7 != 0, y)
b.py:
def all():
n = 2
while True:
yield n
n = n + 1
y = all()
number = next(y)
print(number)
y = filter(lambda x: x % number != 0, y)
num = next(y)
print(num)
y = filter(lambda x: x%3 != 0, y)
print(next(y))
y = filter(lambda x: x%5 != 0, y)
print(next(y))
y = filter(lambda x: x%7 != 0, y)
I am trying write a script that print primes.
the output of a.py are: 2 3 4 7.
the output of b.py are: 2 3 5 7.
The variables, num and number, are never used after y = filter(lambda x: x%3 != 0, y)
why the output are different after y = filter(lambda x: x%3 != 0, y)
?