알고리즘 풀이/백준

[백준 1929] 소수 구하기

mhko411 2021. 3. 4. 13:29
728x90

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

 

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.


접근

앞으로 n이 소수인지 판단을 할 때 2부터 n의 제곱근까지 검사를 하도록 하자. 왜냐하면 n의 약수는 n/2보다 크지 않기 때문이다.

 

구현

소수를 판별하는 함수인 is_prime()에서 전달받은 숫자의 제곱근까지 검사하여 소수를 판별하였다.

def is_prime(number):
    if number == 1:
        return False
    for i in range(2, int(number**0.5)+1):
        if number%i == 0:
            return False
    return True
M, N = map(int, input().split())

for num in range(M, N+1):
    if is_prime(num):
        print(num)

'알고리즘 풀이 > 백준' 카테고리의 다른 글

[백준 2630] 색종이 만들기  (0) 2021.03.04
[백준 4948] 베르트랑 공준  (0) 2021.03.04
[백준 11653] 소인수분해  (0) 2021.03.04
[백준 2581] 소수  (0) 2021.03.04
[백준 1463] 1로 만들기  (0) 2021.03.03