백준(Python) 풀이/수학

백준(Python) 4948번 베르트랑 공준 풀이

개발윗미 2021. 10. 7. 11:02

Python으로 구현한 4948번 베르트랑 공준 문제 풀이입니다.

 

https://www.acmicpc.net/problem/4948

 

4948번: 베르트랑 공준

베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼

www.acmicpc.net


from math import sqrt

while True :
  n = int(input())
  if n == 0 :
    break
  
  result = 0

  for i in range(n+1, 2*n + 1) :
    if i == 1 :
      continue
    elif i == 2 :
      result += 1
      continue
    else :
      for j in range(2, int(sqrt(i) + 1)) :
        if i % j == 0 :
          break
      else :
        result += 1
        
  print(result)

 

while문을 통해 여러 개의 테스트 케이스를 이루고 0이 입력되면 종료한다.

 

while문 내부에는 반복문을 통해 자연수 n보다 크고, 2n보다 작거나 같은 소수의 개수를 구한다.

 

현재의 수가 1이라면 소수가 아니기 때문에 넘어가고, 2라면 소수이기 때문에 result 값을 1 증가시킨 뒤 넘어간다.

 

둘 다 아닐 경우 이중 for문을 통해 i를 j로 나눈 나머지값을 확인하여 나누어 떨어진다면 소수이기 때문에 두번째 반복문을

 

빠져나오고 break문의 영향으로 두번째 반복문이 끝나지 않았던 거라면 result 값을 1 증가시킨다.

 

모든 반복처리가 끝난 뒤 최종적으로 result 값을 출력한다.