Python으로 구현한 4948번 베르트랑 공준 문제 풀이입니다.
https://www.acmicpc.net/problem/4948
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 값을 출력한다.
'백준(Python) 풀이 > 수학' 카테고리의 다른 글
백준(Python) 1010번 다리 놓기 풀이 (0) | 2021.10.07 |
---|---|
백준(Python) 10953번 A+B - 6 풀이 (0) | 2021.10.07 |
백준(Python) 1934번 최소공배수 풀이 (0) | 2021.10.07 |
백준(Python) 2475번 검증수 풀이 (0) | 2021.10.07 |
백준(Python) 11653번 소인수분해 풀이 (0) | 2021.10.07 |