본문 바로가기
백준

[백준] 4134번 : 다음 소수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 11. 28.
728x90
반응형

 

 

4134번: 다음 소수

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. sqrt() 함수를 사용하기 위해 math 모듈을 불러온다. import math
  3. 테스트 케이스의 개수를 입력받는다. T = int(sys.stdin.readline())
  4. 소수를 판별할 함수를 생성한다. def check(x)
  5. 2부터 자기 자신의 제곱수 정수 부분까지 반복하며 for i in range(2, int(math.sqrt(x)) + 1)
  6. 만약 판별할 수가 나누어 떨어지면 if (x % i == 0)
  7. 소수가 아니므로 False를 반환하고 return False
  8. 끝까지 나누어 떨어지지 않으면 소수이므로 True를 반환한다. return True
  9. 테스트 케이스만큼 반복하며 for _ in range(T)
  10. 정수를 입력받는다. n = int(sys.stdin.readline())
  11. 만약 정수가 0이나 1이면 if (n == 0) or (n == 1)
  12. 해당 정수보다 크거나 같은 소수는 2이므로 2를 출력하고 print(2)
  13. 다음 테스트 케이스로 넘어간다. continue
  14. 그게 아니라면 크거나 같은 소수를 찾을 때까지 무한반복하며 while (True)
  15. 해당 정수부터 소수인지 판별하고 만약 소수이면 if (check(n))
  16. 해당 수를 출력하고 print(n)
  17. 반복을 종료한다. break
  18. 소수가 아니면 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
반응형