#include <vector>
#include <iostream> // code by Jerry Coffin, 2014-01-04
#include <time.h> // from http://stackoverflow.com/a/20917972/849891
unsigned long primes = 0;
int main() {
// empirically derived limit to get 1,000,000 primes
int number = 15485865;
clock_t start = clock();
std::vector<bool> sieve(number,false);
sieve[0] = sieve[1] = true;
for(int i = 2; i<number; i++) {
if(!sieve[i]) {
++primes;
for (int temp = 2*i; temp<number; temp += i)
sieve[temp] = true;
}
}
clock_t stop = clock();
std::cout.imbue(std::locale(""));
std::cout << "Total primes: " << primes << "\n";
std::cout << "Time: " << double(stop - start) / CLOCKS_PER_SEC << " seconds\n";
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPiAgICAgLy8gY29kZSBieSBKZXJyeSBDb2ZmaW4sIDIwMTQtMDEtMDQKI2luY2x1ZGUgPHRpbWUuaD4gICAgICAgLy8gZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMDkxNzk3Mi84NDk4OTEKCnVuc2lnbmVkIGxvbmcgcHJpbWVzID0gMDsKCmludCBtYWluKCkgewogICAgLy8gZW1waXJpY2FsbHkgZGVyaXZlZCBsaW1pdCB0byBnZXQgMSwwMDAsMDAwIHByaW1lcwogICAgaW50IG51bWJlciA9IDE1NDg1ODY1OyAKCiAgICBjbG9ja190IHN0YXJ0ID0gY2xvY2soKTsKICAgIHN0ZDo6dmVjdG9yPGJvb2w+IHNpZXZlKG51bWJlcixmYWxzZSk7CiAgICBzaWV2ZVswXSA9IHNpZXZlWzFdID0gdHJ1ZTsKCiAgICBmb3IoaW50IGkgPSAyOyBpPG51bWJlcjsgaSsrKSB7CiAgICAgICAgaWYoIXNpZXZlW2ldKSB7CiAgICAgICAgICAgICsrcHJpbWVzOwogICAgICAgICAgICBmb3IgKGludCB0ZW1wID0gMippOyB0ZW1wPG51bWJlcjsgdGVtcCArPSBpKQogICAgICAgICAgICAgICAgc2lldmVbdGVtcF0gPSB0cnVlOwogICAgICAgIH0KICAgIH0KICAgIGNsb2NrX3Qgc3RvcCA9IGNsb2NrKCk7CgogICAgc3RkOjpjb3V0LmltYnVlKHN0ZDo6bG9jYWxlKCIiKSk7CiAgICBzdGQ6OmNvdXQgPDwgIlRvdGFsIHByaW1lczogIiA8PCBwcmltZXMgPDwgIlxuIjsKICAgIHN0ZDo6Y291dCA8PCAiVGltZTogIiA8PCBkb3VibGUoc3RvcCAtIHN0YXJ0KSAvIENMT0NLU19QRVJfU0VDIDw8ICIgc2Vjb25kc1xuIjsKICAgIHJldHVybiAwOwp9