Question

I have some question regarding the for-else loop in another for loop. So here is an example:

primelist = []
for p in range (2, x+1):
    print 'in first for'
    raw_input()
    for i in range(2, p):
        print 'in second for'
        if p%i == 0:
            print 'in if'
            raw_input()
            break
    else:
        print 'in else'
        raw_input()
        primelist = primelist + [p]
return primelist

As you see this is for determining the prime numbers and store them into a list so that they can be retrieved later. So my problem is with the first for loop. When I run the program, it enters like this: First FOR loop, ELSE, First FOR loop, Second FOR loop and so on. Why does it skip to ELSE the first time? Also if I ask for the 1000th number I get : 7919 with the

for i in range(2, p)

and 7907 with the

for i in range(2, p/2).

Why is that? Hope you will help me with this, but please do not give other methods for implementing the Prime Number algorithm!

Was it helpful?

Solution

Python's range doesn't include the ending value.

range[start, end)

So, In the first iteration, value of p will be 2 and range(2, 2) is an empty list. That is why the else part is entered.

print range(2, 2)  # []
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top