結果

提出番号 649
提出者 kosakkun
言語 C++
提出日時 2017-08-01 12:26:04
問題名 (21)素数列挙
結果 AC
点数 100%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 2ms 7616KB
2 AC 100% 2ms 7984KB
3 AC 100% 3ms 8256KB
4 AC 100% 4ms 8256KB
5 AC 100% 2ms 8320KB

ソースコード

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <sstream>
#include <cmath>
#include <set>
#include <iomanip>
#include <deque>
#include <stdio.h>
#include <random>
using namespace std;
 
#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define RREP(i,n) for(int (i)=(int)(n)-1;i>=0;i--)
#define REMOVE(Itr,n) (Itr).erase(remove((Itr).begin(),(Itr).end(),n),(Itr).end())
typedef long long ll;

struct PrimeNumbers {

    vector<bool> sieve;
    vector<long long> prime;

    PrimeNumbers (int n) : sieve(n+1,true) {
        sieve[0] = sieve[1] = false;
        for (long long i = 2; i < sieve.size(); i++) {
            if (sieve[i]) {
                prime.push_back(i);
                for (long long j = i * i; j < sieve.size(); j += i) {
                    sieve[j] = false;
                }
            }
        }
    }

    bool isPrime(long long n) {
        return sieve[n];
    }

    int size(void) {
        return (int) prime.size();
    }

    long long  operator [] (int n) {
        return  prime[n];
    }

};

int main() {

    ll N; cin >> N;
    PrimeNumbers p(N);

    REP(i,p.size()) {
        cout << p[i] << (i < p.size() - 1 ? " " : "\n");
    }

    return 0;
}