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를 출력.
- 입력받은 수가 소수라면 그 수를 그대로 출력.
- 입력받은 수가 소수가 아니면 그 수보다 큰 수를 하나씩 확인해 소수를 찾고 출력.
'PS > 수학' 카테고리의 다른 글
[백준] 13909번: 창문 닫기 파이썬 (0) | 2024.09.19 |
---|---|
[백준] 17103번: 골드바흐 파티션 파이썬 (0) | 2024.09.09 |
[백준]2485번: 가로수 파이썬 (0) | 2024.09.05 |
1735번: 분수 합 파이썬 (0) | 2024.09.04 |
[백준] 13241번: 최소공배수 파이썬 (3) | 2024.09.03 |