본문 바로가기
PS/수학

[백준] 4134번: 다음 소수 파이썬

by 3급우사기 2024. 9. 6.

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

 


주어진 수보다 크거나 같은 첫 번째 소수를 찾는 문제. 입력된 수가 소수가 아니면 그보다 큰 수 중에서 가장 작은 소수를 찾아 출력하면된다.

 

import sys
import math

def is_primenum(x):
    for i in range(2, int(math.sqrt(x)) + 1):
        if x % i == 0:
            return False
    return True

n = int(sys.stdin.readline())
for _ in range(n):
    num = int(sys.stdin.readline())
    while True:
        if num == 0 or num == 1:
            print(2)
            break
        if is_primenum(num):
            print(num)
            break
        num += 1


코드 해설
-소수 판별 함수(`is_primenum`): 주어진 수가 소수인지 아닌지를 판별. 소수는 1과 자기 자신으로만 나누어떨어지기 때문에, 이 함수는 2부터 해당 수의 제곱근까지 나눠지면 소수가 아니라고 판단.
- 입력받은 수가 0이나 1이면 2를 출력.
- 입력받은 수가 소수라면 그 수를 그대로 출력.
- 입력받은 수가 소수가 아니면 그 수보다 큰 수를 하나씩 확인해 소수를 찾고 출력.