while (1): study();
[백준/1929] 소수 구하기 본문
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