Сложение всех простых чисел от 50 до 70 - Почему мой код не работает? - PullRequest
0 голосов
/ 21 марта 2020

Код:

counter = 50
total = 0
for i in range(counter, 70):
    is_prime = True
    for j in range(2, i):
        remainder = i % j
        print("i is : ", i, "   - and j is : ", j, " and the remainder is : ", remainder)
        if remainder == 0:
            is_prime = False
            print("remainder = ", remainder,", so ", i, "is not a prime")
    if is_prime:
        total += i
    else:
        print(i, " is a prime")
print(total)

Таким образом, если вы запустите код, он сначала скажет «50 - это не простое число», а затем позже - «50 - простое число». И я не понимаю этого. Я устанавливаю is_prime BOOLEAN в True только перед тем, как запустить тест l oop. Во время теста l oop, если число НЕ является простым, оно установит для is_prime значение False. Так что, на мой взгляд, is_prime не устанавливается обратно в True (только до начала следующей итерации l oop), поэтому число (I) должно быть идентифицировано как «не простое число». Где я не прав?

1 Ответ

3 голосов
/ 21 марта 2020

Это логика c ... если простое число является ложным, оно не простое. Вы получили эту часть задом наперед.

if is_prime:
    print(i, " is a prime")
    total += i
else:
    print(i, " is not a prime")
...