1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
///
/// @file generate_primes1.cpp
/// @brief Test prime number generation.
///
/// Copyright (C) 2017 Kim Walisch, <kim.walisch@gmail.com>
///
/// This file is distributed under the BSD License. See the COPYING
/// file in the top level directory.
///
#include <primesieve.hpp>
#include <stdint.h>
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
using namespace primesieve;
// primes inside [0, 100]
const uint64_t small_primes[25] =
{
2, 3, 5, 7, 11,
13, 17, 19, 23, 29,
31, 37, 41, 43, 47,
53, 59, 61, 67, 71,
73, 79, 83, 89, 97
};
// primes inside [10^15, 10^15 + 741]
const uint64_t large_primes[19] =
{
1000000000000037ull,
1000000000000091ull,
1000000000000159ull,
1000000000000187ull,
1000000000000223ull,
1000000000000241ull,
1000000000000249ull,
1000000000000259ull,
1000000000000273ull,
1000000000000279ull,
1000000000000297ull,
1000000000000357ull,
1000000000000399ull,
1000000000000403ull,
1000000000000487ull,
1000000000000513ull,
1000000000000613ull,
1000000000000711ull,
1000000000000741ull
};
void check(bool OK)
{
cout << " " << (OK ? "OK" : "ERROR") << "\n";
if (!OK)
exit(1);
}
int main()
{
vector<uint64_t> primes;
generate_primes(100, &primes);
cout << "primes.size() = " << primes.size();
check(primes.size() == 25);
for (uint64_t i = 0; i < primes.size(); i++)
{
cout << "primes[" << i << "] = " << primes[i];
check(primes[i] == small_primes[i]);
}
primes.clear();
generate_primes(1000000000000000ull, 1000000000000741ull, &primes);
cout << "primes.size() = " << primes.size();
check(primes.size() == 19);
for (uint64_t i = 0; i < primes.size(); i++)
{
cout << "primes[" << i << "] = " << primes[i];
check(primes[i] == large_primes[i]);
}
cout << endl;
cout << "All tests passed successfully!" << endl;
return 0;
}
|