이 글에서는 주어진 문제 상황을 해결하기 위한 방법과 접근 방식을 알아보겠습니다.
문제 정의
시작 값과 끝 값으로 이루어진 구간이 주어졌을 때, 해당 구간에 포함된 모든 소수를 출력해야 합니다.
소수(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 구문을 활용하여 주어진 구간 내의 소수를 출력하는 방법을 살펴보았습니다. 이러한 기본적인 소수 판별 로직은 다양한 알고리즘 문제의 기초가 되므로 잘 익혀두면 유용합니다.