백준
[백준] 4134번 : 다음 소수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 11. 28. 13:50
728x90
반응형
4134번: 다음 소수
정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
www.acmicpc.net
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- sqrt() 함수를 사용하기 위해 math 모듈을 불러온다. import math
- 테스트 케이스의 개수를 입력받는다. T = int(sys.stdin.readline())
- 소수를 판별할 함수를 생성한다. def check(x)
- 2부터 자기 자신의 제곱수 정수 부분까지 반복하며 for i in range(2, int(math.sqrt(x)) + 1)
- 만약 판별할 수가 나누어 떨어지면 if (x % i == 0)
- 소수가 아니므로 False를 반환하고 return False
- 끝까지 나누어 떨어지지 않으면 소수이므로 True를 반환한다. return True
- 테스트 케이스만큼 반복하며 for _ in range(T)
- 정수를 입력받는다. n = int(sys.stdin.readline())
- 만약 정수가 0이나 1이면 if (n == 0) or (n == 1)
- 해당 정수보다 크거나 같은 소수는 2이므로 2를 출력하고 print(2)
- 다음 테스트 케이스로 넘어간다. continue
- 그게 아니라면 크거나 같은 소수를 찾을 때까지 무한반복하며 while (True)
- 해당 정수부터 소수인지 판별하고 만약 소수이면 if (check(n))
- 해당 수를 출력하고 print(n)
- 반복을 종료한다. break
- 소수가 아니면 1 증가시켜 다음 수를 다시 소수 판별한다. n += 1
반응형
3. 소스코드
import sys
import math
T = int(sys.stdin.readline())
def check(x):
for i in range(2, int(math.sqrt(x)) + 1):
if (x % i == 0):
return False
return True
for _ in range(T):
n = int(sys.stdin.readline())
if (n == 0) or (n == 1):
print(2)
continue
while (True):
if (check(n)):
print(n)
break
n += 1
728x90
반응형