hoodyo   2년 전

def isPrime(num):
    if num == 1:
        return False
    else:
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                return False
        return True

m, n = map(int, input().split())
for i in range(m, n + 1):
    if isPrime(i):
        print(i)
        

for I in range(2, int(num ** 0.5) + 1 ) 이 부분에 이해가 좀 안되네요 ..

num ** 0.5라고 하면, num의 1/2 제곱인데 1/2 제곱은 루트 가 씌어지지 않나요 ?

가령, 2루트라고 하면 1.414가 될 것이고, 3이라고 하면 1.6 .. 의 수가 될텐데, 어째서 이 수가 for문에 쓰이는지

궁금합니다. range(2, 1.414) 대입해보면 이런 그림이 나오는데, 통 이해가 안되네요!

topgun0209   2년 전

위 코드 에라토스테네스의 체 맞나요..? 

아무튼 어떤 수 N이 소수인지 판단하려면 N의 제곱근까지만 확인하면 되기 때문입니다.  

N=x*y인 x,y가 있다면, 둘 중 작은 수는 N의 제곱근보다 클 수 없으니까요.  

예를 들어 100을 판단하려면, 10까지만 나누어 보면 됩니다  

100은 20으로도, 50으로도 나누어 떨어지지만, 이는 5로, 2로 나누어보는 결과와 다를게 없으니까요  

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