while (1): study();

[백준/1929] 소수 구하기 본문

알고리즘

[백준/1929] 소수 구하기

전국민실업화 2021. 8. 2. 21:50
728x90

출처: https://www.acmicpc.net/problem/1929

 

1929번: 소수 구하기

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

www.acmicpc.net


 소수 판별 알고리즘 중, 에라토스테네스의 체 알고리즘을 이용하면 손쉽게 답을 구할 수 있습니다. 에라토스테네스의 체 알고리즘은 하단 링크에서 설명하고 있습니다.

https://jcy1996.tistory.com/68

 

소수 판별 알고리즘

특정한 수의 소수 판별  특정한 수가 소수(Prime number)인지 여부를 판별하기 위해서는 해당 수에 이르기까지 모든 수를 나누어보고 나머지가 0인지 확인하면 됩니다. import math def is_prime_number(x): fo

jcy1996.tistory.com

 

 소스코드는 다음과 같습니다.

def find_prime_numbers(m, n):
    import math
    
    array = [True for _ in range(n + 1)]
    array[1] = False
    for i in range(2, int(math.sqrt(n + 1)) + 1):
        if array[i]:
            j = 2
            while i * j <= n:
                array[i * j] = False
                j += 1
    
    for i in range(m, n + 1):
        if array[i]:
            print(i)

m, n = list(map(int, input().split()))
find_prime_numbers(m, n)

 에라토스테네스의 체 알고리즘을 이용하여 구간 내 소수를 모두 구하는 함수를 구현했습니다. 따라서 입력을 받은 뒤 함수 인자로 입력을 넣어주면 답을 도출할 수 있습니다.

728x90

'알고리즘' 카테고리의 다른 글

[알고스팟] 시계 맞추기 (완전탐색과 최적화)  (0) 2021.12.27
[백준/1759] 암호 만들기  (0) 2021.08.02
접두사 합  (0) 2021.08.02
투 포인터  (0) 2021.08.02
소수 판별 알고리즘  (0) 2021.08.02
Comments