📍 백준 1929번 - 소수찾기 문제 프로그래밍 언어 [아라토스테네스의 체]
🧩문제 요약
<아라토스테네스의 체>
n과 m이 주어질 때 두 수사이의 소수를 모두 출력하라.
👍이 문제에서 배운점
아라토스테네스의 체는 소수를 판별하는게 아니라 합성수를 지워나가는 개념이다.
https://codinghago.tistory.com/99
소수찾기 알고리즘 C++, 에라토스테네스의 체
소수란? 1보다 크고, 1과 자기 자신 외에는 나누어지지 않는 수를 말한다. (예 : 2, 3, 5, 7, 11, 13 ....) 🧩 기본 소수 판별 (Brute Force)하나의 수n에 대해 2부터 √N까지 나눠보며 소수인지 판단. 시간
codinghago.tistory.com
아라토스테네스의 체를 알고 있었지만 계속 배수만큼 수를 판별하려고 하다보니 코드가 복잡해졌다.
아라토스테네스의 체는 소수를 판별하는 것이 아니라 순차적으로 합성수를 지워나가는 것인것을 기억하자.
🧾 완성된 코드
#include <iostream>
#include <vector>
using namespace std;
int main(){
int m, n;
cin >> m >> n ;
vector<int> arr(n+1, 0);
for(int i = 2 ; i<n+1; i++){
arr[i] =i;
}
for(int i = 2; i< n+1; i++){
if(arr[i] == 0) continue;
for(int j = i*2 ; j<n+1; j+=i){
if(arr[j]!=0) arr[j] = 0;
}
}
for(int i = m; i< n+1; i++){
if(arr[i] !=0 ){
cout << i << "\n";
}
}
}
알고리즘을 알고 있어도 두루뭉술 알고있으면 활용을 전혀 할 수가 없다...
'하루 알고리즘 1문제 풀기' 카테고리의 다른 글
백준 1966번 - 프린터 큐 문제 C++ [Queue] (0) | 2025.04.11 |
---|---|
백준 1008번 - A/B 문제 C++ (0) | 2025.04.11 |
백준 11866번 - 요세푸스 0 문제 C++ [Queue] (0) | 2025.04.09 |
백준 2839번 - 설탕배달 문제 C++ [그리디 알고리즘/다이나믹 프로그래밍] (0) | 2025.04.08 |
01백준 1904번 - 01타일문제 C++ [다이나믹 프로그래밍 알고리즘] (0) | 2025.04.07 |