白駿


#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int M, N;
    cin >> M >> N;
    
    bool isPrime[N+1];
    fill_n(isPrime, N+1, true);
    isPrime[1] = false;
    
    int sqr = (int)sqrt(N);
    
    for(int i=2; i<=sqr; i++) {
        
        if(isPrime[i]) {
            for(int j=2; i*j<=N; j++) {
                isPrime[i*j] = false;
            }
        }
    }
    
    for(int i=M; i<=N; i++) {
        if(isPrime[i])
            cout << i << '\n';
    }
    
    return 0;
}

説明:


ほじょてん


ちょうど必要な部分Mから計算したいだけですが、あまりよくありません.後でやってみましょう.