Простое число в заданном диапазоне в python, проблема с range (), - PullRequest
0 голосов
/ 09 апреля 2020

Эта программа печатает простое число между 1-20, я пытался gr asp обработка (для l oop, диапазон и другое, связанное с для) в этой программе

def isPrime(num):
    for i in range(2,num):
        if num%i==0:
            return False
        #else:
            #return True
    else:
        return True

#below is driver program        
for i in range(1, 20):
    if isPrime(i + 1):
        print(i + 1, end="\n")
print()

1. в этой программе вместо num в * 1004 ставится num // 2 * результат равен diff (выводит 4 как простое) почему?

когда 2 отправляется на isprime(), оно даже не вводится для l oop, оно не проверяется условиями if, а выводит 2 как простое число блоком else, связанным с for. почему как? Я думаю, что из-за range(2,num), 2 передается как num.

Может кто-нибудь объяснить ??

1 Ответ

0 голосов
/ 09 апреля 2020

Проблема в том, что range(2,n) это все числа 2, 3, ..., n-1. Так что измените ваш for l oop на:

for i in range(2,num+1):

Как есть, когда передается 2, диапазон будет пустым.

...