pythonalgorithmprogram-structurefor-else

For-Else loop in another For loop


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!


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)  # []