반응형
문제
정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다.
출력
각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다.
예제 입력3
6 20 100 |
예제 출력7
23 101 |
풀이
정확히 몇 개의 테스트 케이스가 필요한 지 주어지지 않아서 시간 복잡도를 얼마나 고려해야 싶었는데, 그냥 일반적인 소수 판별로도 해결되었다.
에라토스테네스의 체를 활용하여 소수 판별에 있어 시간 복잡도를 더 줄일 수는 있을 것 같다.
import sys
input = sys.stdin.readline
def isPrime(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(int(input())):
n = int(input())
while True:
if isPrime(n):
print(n)
break
n+=1
반응형
'알고리즘 연습 > 수학, 정수론, 기하' 카테고리의 다른 글
[🥈2 / 백준 17103 / 파이썬] 골드바흐 파티션 (0) | 2024.05.06 |
---|---|
[🥈4 / 백준 2485 / 파이썬] 가로수 (1) | 2024.02.05 |
[🥉3 / 백준 1267 / 파이썬] 핸드폰 요금 (0) | 2023.09.29 |
[🥉1 / 백준 4344 / 파이썬] 평균은 넘겠지 (2) | 2023.06.22 |
[🥉3 / 백준 14215 / 파이썬] 세 막대 (0) | 2023.06.14 |