[백준/Python] 4948 베르트랑 공준

재활용병·2024년 1월 17일
0

코딩 테스트

목록 보기
86/157

[백준/Python] 4948 베르트랑 공준


풀이 코드 및 설명

def is_prime(n):
    if n <= 1: 
        return False
    if n <= 3: 
        return True
    if n % 2 == 0 or n % 3 == 0: 
        return False
    i = 5 
    while i * i <= n: 
        if n % i == 0 or n % (i + 2) == 0: 
            return False
        i += 6
    return True

while True:
    n = int(input())
    if n == 0:
        break
    primes_n_to_2n = []
    for i in range(n+1,2*n + 1):
        if is_prime(i):
            primes_n_to_2n.append(i)
    print(len(primes_n_to_2n))

위 문제는 푸는 방법은 다음과 같다.
1. n보다 크고 2n 보다 작거나 같은 수까지 소수를 배열에 삽입한다.
2. 답은 배열의 길이로 출력한다.

소수인지 아닌지 판단하는 is_prime 함수 설명 [백준/Python] 4134 다음 소수


정답이 맞다고 생각했는데, 아니였다. 이유는 문제의 조건을 제대로 확인하지 않았기 때문에 틀린 것이다.

  1. n보다 크고 = n을 포함하지 않고, n + 1 부터 소수를 세야한다.
  2. 2n보다 작거나 같고 = 2n을 포함하기 때문에 2n 까지 검사하고 이는 for 문 범위로 인해 +1 해준다.
profile
코딩 말고 개발

0개의 댓글

관련 채용 정보