[백준][Python] 4134. 다음 소수
Silver Ⅳ 🔗4134. 다음 소수
📝문제 요약
문제
정수 n(0 ≤ n ≤ 4*10⁹)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다.
출력
각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다.
✏️문제 풀이
- 입력
- 테스트 케이스의 개수
n
입력 n
개의 테스트 케이스를 받아test_case
리스트에 저장
- 테스트 케이스의 개수
- 주어진 숫자가 소수인지 판별하는 함수
is_prime()
을 생성- 2보다 작은 수는 소수가 아니므로
False
반환 - 2부터
num
의 제곱근까지 나누어 떨어지는지 확인- 나누어 떨어지면 소수가 아니므로
False
반환
- 나누어 떨어지면 소수가 아니므로
- 반복문을 빠져나오면 소수이므로
True
반환
- 2보다 작은 수는 소수가 아니므로
test_case
를 순회하며 확인- 현재 숫자가 소수인지 확인하여
- 소수이면 출력하고 다음 테스트 케이스로 넘어감
- 소수가 아니라면 1을 더하여 다음 숫자 확인
- 현재 숫자가 소수인지 확인하여
코드와 함께 보는 풀이
# 테스트 케이스의 개수 입력
n = int(input())
# n개의 테스트 케이스를 받아 test_case 리스트에 저장
test_case = [int(input()) for _ in range(n)]
# 주어진 숫자가 소수인지 판별하는 함수
def is_prime(num):
# 2보다 작은 수는 소수가 아니므로 False 반환
if num < 2:
return False
# 2부터 num의 제곱근까지 순회
for i in range(2, int(num**0.5) + 1):
# 나누어 떨어지면 소수가 아니므로 False 반환
if num % i == 0:
return False
# 반복문을 빠져나오면 소수이므로 True 반환
return True
# test_case를 순회하며 확인
for i in test_case:
while True:
# 현재 숫자가 소수라면 출력하고 다음 테스트 케이스로 넘어감
if is_prime(i):
print(i)
break
# 소수가 아니라면 1을 더하여 다음 숫자 확인
i += 1
💯제출 코드
n = int(input())
test_case = [int(input()) for _ in range(n)]
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
for i in test_case:
while True:
if is_prime(i):
print(i)
break
i += 1
댓글남기기