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!

有帮助吗?

解决方案

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)  # []
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top