728x90
문제
정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/4134
입력
첫째 줄에 테스트 케이스의 개수가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다.
출력
각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다.
예제
# input
3
6
20
100
# output
7
23
101
문제 풀이
import sys
N = int(sys.stdin.readline())
# 소수 판별 함수 (0과 1은 소수가 아니기에 제외)
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
for _ in range(N):
num = int(sys.stdin.readline())
# num이 소수이면 그대로 출력
if is_prime(num):
print(num)
# num이 소수가 아닐 경우 1씩 더해 소수 판별
else:
i = num + 1
while True:
if is_prime(i):
print(i)
break
i += 1
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90