백준 algorithm

백준 1929 - 소수구하기

cosmohoo 2020. 3. 13. 14:19
반응형

문제 설명

 

 

=>에라토스테네스의 체를 사용할 줄 아는지를 묻는 문제이다. 

=>j를 검색할 때 I*I부터 시작하니 자료형을 int를 써야하는 지, long을 써야하는지 long long을 써야하는지 정확히 봐야한다. 

=>위의 문제에서 2번이나 틀렸다. 

 

 

 

 

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

using namespace std;


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int A, B;
    cin>> A>>B;
    
    vector<int> prime(B-A);
    int pn=0;
    vector<bool> check(B);
    int limit=B;
    
    for(long i=2; i<=limit; ++i)
    {
        if(check[i] == false)
        {
            if(i>=A)
            {
                prime[pn++]=i;
            }
            for(long long j=i*i; j<=limit; j+=i)
            {
                check[j]=true;
            }
        }
    }
    int index=0;
    while(prime[index]!=0)
    {
        cout<<prime[index++]<<'\n';
    }
    
    return 0;
}

반응형