image

Silver Ⅳ 🔗4134. 다음 소수

📝문제 요약

문제

정수 n(0 ≤ n ≤ 4*10⁹)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다.

출력

각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다.


✏️문제 풀이

  • 입력
    • 테스트 케이스의 개수 n 입력
    • n개의 테스트 케이스를 받아 test_case 리스트에 저장
  • 주어진 숫자가 소수인지 판별하는 함수 is_prime()을 생성
    • 2보다 작은 수는 소수가 아니므로 False 반환
    • 2부터 num의 제곱근까지 나누어 떨어지는지 확인
      • 나누어 떨어지면 소수가 아니므로 False 반환
    • 반복문을 빠져나오면 소수이므로 True 반환
  • 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

댓글남기기