
안녕하세요 !
오늘은 백준 - 다음 소수 문제를 가지고 왔습니다.

문제를 해결한 방법을 정리해보겠습니다.
- 숫자의 개수와 개수만큼의 숫자를 입력 받습니다.
- 입력받은 숫자부터 최댓값까지 반복문을 돌리면서 가장 가까운 소수를 구해줍니다.
n = int(sys.stdin.readline().strip()) for i in range(n): answer = 0 num = int(sys.stdin.readline().strip())
입력받은 숫자가 0이거나 1일 때 continue로 처리해줬습니다.
for i in range(num, (4 * (10 ** 9)) + 10): if i < 2: continue for j in range(2, int(math.sqrt(i)) + 1): if i % j == 0: break else: print(i) break
이 문제를 풀었을 때 아래와 같이 계속 틀렸었는데요 !

그 이유를 알고 보니...
숫자가 최대(4 * 10^9)일 때 최댓값이랑 같거나 큰 소수는 4000000007이다.
그러면 2번째 for문의 범위가 입력받은 수부터 4000000008까지여야 하는데 4*10^9까지 만큼만 돌게 설정해놓아서 오류가 났습니다.
import sys
import math
n = int(sys.stdin.readline().strip())
for i in range(n):
answer = 0
num = int(sys.stdin.readline().strip())
for i in range(num, (4 * (10 ** 9)) + 10):
if i < 2:
continue
for j in range(2, int(math.sqrt(i)) + 1):
if i % j == 0:
break
else:
print(i)
break