Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 주어진 구간 내 소수 출력하기

이 글에서는 주어진 문제 상황을 해결하기 위한 방법과 접근 방식을 알아보겠습니다.

문제 정의

시작 값과 끝 값으로 이루어진 구간이 주어졌을 때, 해당 구간에 포함된 모든 소수를 출력해야 합니다.

소수(prime number)란 1보다 큰 자연수 중에서 1과 자기 자신 외에는 양의 약수를 가지지 않는 수를 의미합니다.

이 문제는 두 개의 for 반복문을 사용하여 해결할 수 있습니다. 첫 번째 반복문은 구간 내의 숫자를 하나씩 가져오는 역할을 하고, 두 번째 반복문은 해당 숫자가 소수인지 여부를 검사합니다.

그럼 실제 구현 코드를 살펴보겠습니다.

예제

start = 10
end = 29
for val in range(start, end + 1):
    # 어떤 수로든 나누어 떨어지면 소수가 아님
    if val > 1:
        for n in range(2, val):
            if (val % n) == 0:
                break
        else:
            print(val)

출력 결과

11
13
17
19
23
29

위 예제에서는 start가 10, end가 29로 설정되었기 때문에, 10부터 29 사이에 존재하는 소수인 11, 13, 17, 19, 23, 29가 순서대로 출력됩니다.

여기서 주목할 점은 파이썬의 for-else 구문입니다. 내부 반복문이 break 없이 끝까지 실행되면 else 블록이 실행되는데, 이는 해당 숫자를 나누어 떨어지게 하는 약수가 없다는 의미이므로 그 숫자가 소수임을 판별할 수 있습니다.

또한 모든 변수와 함수는 아래 그림과 같이 전역 범위(global scope)에서 선언됩니다.

결론

이 글에서는 파이썬의 range 함수와 중첩 반복문, 그리고 for-else 구문을 활용하여 주어진 구간 내의 소수를 출력하는 방법을 살펴보았습니다. 이러한 기본적인 소수 판별 로직은 다양한 알고리즘 문제의 기초가 되므로 잘 익혀두면 유용합니다.