Почему мой вложенный цикл while не работает? - PullRequest
1 голос
/ 03 января 2012

Работа над программой на python для распечатки первых 1000 простых чисел (кроме 2).все, что я могу получить для вывода, это число 3. не понимаю, где или когда заканчивается мой цикл.очень новый в программировании.кто-нибудь может помочь?

primeCounter = 1
candidate = 3

while primeCounter < 1000:
    isPrime = True
    counter = 2
    while counter < candidate:
        if candidate%counter == 0:
            isPrime = False
        else:
            counter = counter + 1

    if isPrime == True:
        print candidate
        primeCounter = primeCounter + 1

     candidate = candidate + 1

Ответы [ 3 ]

3 голосов
/ 03 января 2012
primeCounter = 1
candidate = 3

while primeCounter < 1000:
    isPrime = True
    counter = 2
    while counter < candidate:
        if candidate%counter == 0:
            isPrime = False
            break # <<<<<<<<<<<<<<<<<   break here, or the loop will go infinite
        else:
            counter = counter + 1

    if isPrime == True:
        print candidate
        primeCounter = primeCounter + 1

    candidate = candidate + 1
2 голосов
/ 03 января 2012

Как только вы установите isPrime в False, вы никогда больше не увеличите counter, поэтому вы никогда не выйдете из внутреннего цикла while.

0 голосов
/ 03 января 2012

Ваша проблема в блоке

while counter < candidate:
    if candidate%counter == 0:
        isPrime = False

, если не счетчик кандидатов%, вы получите бесконечный цикл.

...