문제

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