hoodyo   2년 전

m, n = list(map(int, input().split()))
def is_prime(num):
    if num <= 1:
        return False

    i = 2
    while i * i <= num:
        if num % i == 0:
            return False

        i += 1
    return True

for i in range(m, n + 1):
    if is_prime(i):
        print(i)
        

해당 코드에 

while I * I <= num:

     if num % I == 0:

        return False

     I += 1

return True 


해당 부분에서 이해가 안됩니다..ㅠㅠㅠ 이 코드대로라면 i 는 4 9 16 25 36.... 이고 num은 345678... 16인데 나눠지지 않은 수이니 00 아닐 것이고

I += 1 전부 이 대로 빠지게 되는 것이라 트루가 출력되는 걸로 보이는데, 제 해석이 틀린건가요? ㅠㅠ 

진심어린 도움 부탁드립니다. 그리고, 혹시나 해당 코드가 어떻게 쓰여졌는지도 설명해주시면 정말 감사하겠습니다.  
          

dnjs1318   2년 전

num이 7이고 i가 2인 경우

while i * i <= num :

if num(7) % i(2) == 0

//나눠떨어지니까 소수임

i += 1; //숫자 하나 증가시켜서 나눠떨어지는지 확인

num이 7이고 i가 3인 경우

while i * i <= num: //안으로 들어가지 않음

================================

num이 8이고 i가 2인 경우

while i * i <= num :

if num(8) % i(2) == 0

//나눠떨어지니까 소수임

// 소수이므로 false

댓글을 작성하려면 로그인해야 합니다.