Цикл For-Else в другом цикле For

У меня есть вопрос относительно цикла for-else в другом цикле for. Итак, вот пример:

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

Как вы видите, это для определения простых чисел и сохранения их в списке, чтобы их можно было найти позже. Так что моя проблема с первым циклом for. Когда я запускаю программу, она вводится так: Первый цикл FOR, ELSE, Первый цикл FOR, Второй цикл FOR и так далее. Почему он пропускает в ELSE в первый раз? Также, если я прошу 1000-й номер, я получу: 7919 с

for i in range(2, p)

и 7907 с

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

Это почему? Надеюсь, вы поможете мне с этим, но, пожалуйста, не давайте других методов для реализации алгоритма простого числа!

1 ответ

Решение

Питона range не включает конечное значение.

range[start, end)

Итак, в первой итерации значение p будет 2 и range(2, 2) это пустой список. Вот почему остальная часть введена.

print range(2, 2)  # []
Другие вопросы по тегам