Remove hard-coded length of prime numbers.

[SVN r42101]
This commit is contained in:
Daniel James
2007-12-16 11:06:16 +00:00
parent 5d3e0b0b81
commit b542050fa0

View File

@@ -82,17 +82,21 @@ namespace boost {
// no throw // no throw
inline std::size_t next_prime(std::size_t n) { inline std::size_t next_prime(std::size_t n) {
std::size_t const* const prime_list_end = prime_list +
sizeof(prime_list) / sizeof(*prime_list);
std::size_t const* bound = std::size_t const* bound =
std::lower_bound(prime_list,prime_list + 28, n); std::lower_bound(prime_list,prime_list_end, n);
if(bound == prime_list + 28) if(bound == prime_list_end)
bound--; bound--;
return *bound; return *bound;
} }
// no throw // no throw
inline std::size_t prev_prime(std::size_t n) { inline std::size_t prev_prime(std::size_t n) {
std::size_t const* const prime_list_end = prime_list +
sizeof(prime_list) / sizeof(*prime_list);
std::size_t const* bound = std::size_t const* bound =
std::upper_bound(prime_list,prime_list + 28, n); std::upper_bound(prime_list,prime_list_end, n);
if(bound != prime_list) if(bound != prime_list)
bound--; bound--;
return *bound; return *bound;