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

Python으로 주어진 숫자 범위 내에서 소수 찾는 방법

주어진 숫자 범위 내에서 소수(prime number)를 찾아야 하는 경우가 종종 있습니다. 이때 시작 값과 끝 값을 입력받은 뒤 해당 범위를 순회하면서 각 숫자가 소수인지 판별하게 됩니다. 이 과정에서 나머지를 구하는 %(모듈로) 연산자를 활용합니다.

예제 코드

다음 예제는 670부터 699 사이의 소수를 찾는 과정을 보여줍니다.

lower_range = 670
upper_range = 699
print("하한값과 상한값 :")
print(lower_range, upper_range)
print(lower_range, "과", upper_range, "사이의 소수는 다음과 같습니다:")
for num in range(lower_range, upper_range + 1):
   if num > 1:
      for i in range(2, num):
         if (num % i) == 0:
            break
      else:
         print(num)

실행 결과

하한값과 상한값 :
670 699
670 과 699 사이의 소수는 다음과 같습니다:
673
677
683
691

코드 설명

  • 먼저 상한값과 하한값을 설정하고 콘솔에 출력하여 확인합니다.
  • range() 함수를 사용해 두 값 사이의 모든 숫자를 하나씩 순회합니다.
  • 1은 소수도 합성수도 아니기 때문에, 현재 숫자가 1보다 큰지 먼저 검사합니다.
  • 내부 반복문에서 2부터 자기 자신 미만까지의 숫자로 나누어 나머지(%)를 확인합니다.
  • 나머지가 0이 되는 수(약수)가 존재하면 소수가 아니므로 break로 내부 반복문을 빠져나갑니다.
  • 반대로 어떤 수로도 나누어 떨어지지 않으면 else 블록이 실행되어 해당 숫자가 소수임을 확인하고 콘솔에 출력합니다.

참고: for-else 문법

위 코드에서 사용된 for-else 구문은 파이썬의 독특한 문법입니다. 반복문이 break 없이 정상적으로 모두 실행되었을 때 else 블록이 실행됩니다. 즉, 중간에 약수를 발견하지 못했다면 그 숫자는 소수라는 의미가 됩니다. 이 문법을 활용하면 별도의 플래그 변수 없이 깔끔하게 소수 판별 로직을 작성할 수 있습니다.