N

(프로그래머스 c++)소수 찾기 본문

프로그래머스 알고리즘/1단계

(프로그래머스 c++)소수 찾기

naeunchan 2020. 4. 24. 09:54
728x90
반응형

소수 찾는 기본적인 문제..!

종종 알고리즘 문제를 풀다보면 나오는 것 같다..!

그래서 풀이 형태를 외워두는 게 나을 것 같다..!

 

전역 변수로 1000001 크기의 bool 형태 배열을 선언해준다.

2부터 n까지 for문을 돌면서 prime[i]가 false이면 소수이고,

소수의 배수는 소수가 아니기 때문에 true로 바꿔준다.

'에라토스테네스의 체' 알고리즘을 사용했다.

 

https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4

 

에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 수학에서 에라토스테네스의 체는 소수(소수)를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 알고리즘[편집] 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색) 자기 자신을 제외한 2의 배수를 모두 지운다. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초

ko.wikipedia.org

#include <string>
#include <vector>
#include <iostream>

using namespace std;
bool prime[1000001] = {false, };

int solution(int n) {
    int answer = 0;
    
    for(int i = 2; i <= n; i++)
    {
        if(prime[i] == false)
        {
            answer++;
            prime[i] = true;
            for(int j = i; j <= n; j += i)
                prime[j] = true;
        }
    }
    return answer;
}

 

 

728x90
반응형