Algorithm

에라토스테네스의체

안중환 2016. 3. 22. 13:12
  • m부터 n까지의 소수를 구하는 문제 


    #define N 1000000
    #include <iostream>
    using namespace std;
    
    bool prime[N+1]; // true 소수 x, false 소수 o
    
    int main()
    {
    	prime[0] = prime[1] = true;
    	for (int i = 2; i*i <= N; i++) {
    		if (prime[i] == false) {
    			for (int j = i*i; j <= N; j+=i) {
    				prime[j] = true;
    			}
    		}
    	}
    	
    	int m, n;
    	cin >> m >> n;
    	cin.sync_with_stdio(false);
    
    	for (int i = m; i <= n; i++) {
    		if (prime[i] == false)
    			// cout << i << endl;
    			// cout은 stdio와의 동기화 때문에 느림 -> sync_with_stdio를 false
    			// endl을 하게되면 매번 출력 버퍼를 비움 -> '\n'으로 개행
    			cout << i << "\n";
    	}
    	return 0;
    }