Experimenting with a new forward fomulation (kudos Daniel Kruegler), updated insert iterators to work better with pproxies, and doubled the speed of __next_prime.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@113731 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a0f1dc9f46
commit
d2a9251977
@ -151,7 +151,7 @@ public:
|
|||||||
typedef void pointer;
|
typedef void pointer;
|
||||||
|
|
||||||
explicit back_insert_iterator(Container& x);
|
explicit back_insert_iterator(Container& x);
|
||||||
back_insert_iterator& operator=(typename Container::const_reference value);
|
back_insert_iterator& operator=(const typename _Container::value_type& value);
|
||||||
back_insert_iterator& operator*();
|
back_insert_iterator& operator*();
|
||||||
back_insert_iterator& operator++();
|
back_insert_iterator& operator++();
|
||||||
back_insert_iterator operator++(int);
|
back_insert_iterator operator++(int);
|
||||||
@ -172,7 +172,7 @@ public:
|
|||||||
typedef void pointer;
|
typedef void pointer;
|
||||||
|
|
||||||
explicit front_insert_iterator(Container& x);
|
explicit front_insert_iterator(Container& x);
|
||||||
front_insert_iterator& operator=(typename Container::const_reference value);
|
front_insert_iterator& operator=(const typename _Container::value_type& value);
|
||||||
front_insert_iterator& operator*();
|
front_insert_iterator& operator*();
|
||||||
front_insert_iterator& operator++();
|
front_insert_iterator& operator++();
|
||||||
front_insert_iterator operator++(int);
|
front_insert_iterator operator++(int);
|
||||||
@ -194,7 +194,7 @@ public:
|
|||||||
typedef void pointer;
|
typedef void pointer;
|
||||||
|
|
||||||
insert_iterator(Container& x, typename Container::iterator i);
|
insert_iterator(Container& x, typename Container::iterator i);
|
||||||
insert_iterator& operator=(typename Container::const_reference value);
|
insert_iterator& operator=(const typename _Container::value_type& value);
|
||||||
insert_iterator& operator*();
|
insert_iterator& operator*();
|
||||||
insert_iterator& operator++();
|
insert_iterator& operator++();
|
||||||
insert_iterator& operator++(int);
|
insert_iterator& operator++(int);
|
||||||
@ -624,7 +624,7 @@ public:
|
|||||||
typedef _Container container_type;
|
typedef _Container container_type;
|
||||||
|
|
||||||
_LIBCPP_INLINE_VISIBILITY explicit back_insert_iterator(_Container& __x) : container(&__x) {}
|
_LIBCPP_INLINE_VISIBILITY explicit back_insert_iterator(_Container& __x) : container(&__x) {}
|
||||||
_LIBCPP_INLINE_VISIBILITY back_insert_iterator& operator=(typename _Container::const_reference __value)
|
_LIBCPP_INLINE_VISIBILITY back_insert_iterator& operator=(const typename _Container::value_type& __value)
|
||||||
{container->push_back(__value); return *this;}
|
{container->push_back(__value); return *this;}
|
||||||
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
||||||
_LIBCPP_INLINE_VISIBILITY back_insert_iterator& operator=(typename _Container::value_type&& __value)
|
_LIBCPP_INLINE_VISIBILITY back_insert_iterator& operator=(typename _Container::value_type&& __value)
|
||||||
@ -657,7 +657,7 @@ public:
|
|||||||
typedef _Container container_type;
|
typedef _Container container_type;
|
||||||
|
|
||||||
_LIBCPP_INLINE_VISIBILITY explicit front_insert_iterator(_Container& __x) : container(&__x) {}
|
_LIBCPP_INLINE_VISIBILITY explicit front_insert_iterator(_Container& __x) : container(&__x) {}
|
||||||
_LIBCPP_INLINE_VISIBILITY front_insert_iterator& operator=(typename _Container::const_reference __value)
|
_LIBCPP_INLINE_VISIBILITY front_insert_iterator& operator=(const typename _Container::value_type& __value)
|
||||||
{container->push_front(__value); return *this;}
|
{container->push_front(__value); return *this;}
|
||||||
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
||||||
_LIBCPP_INLINE_VISIBILITY front_insert_iterator& operator=(typename _Container::value_type&& __value)
|
_LIBCPP_INLINE_VISIBILITY front_insert_iterator& operator=(typename _Container::value_type&& __value)
|
||||||
@ -692,7 +692,7 @@ public:
|
|||||||
|
|
||||||
_LIBCPP_INLINE_VISIBILITY insert_iterator(_Container& __x, typename _Container::iterator __i)
|
_LIBCPP_INLINE_VISIBILITY insert_iterator(_Container& __x, typename _Container::iterator __i)
|
||||||
: container(&__x), iter(__i) {}
|
: container(&__x), iter(__i) {}
|
||||||
_LIBCPP_INLINE_VISIBILITY insert_iterator& operator=(typename _Container::const_reference __value)
|
_LIBCPP_INLINE_VISIBILITY insert_iterator& operator=(const typename _Container::value_type& __value)
|
||||||
{iter = container->insert(iter, __value); ++iter; return *this;}
|
{iter = container->insert(iter, __value); ++iter; return *this;}
|
||||||
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
||||||
_LIBCPP_INLINE_VISIBILITY insert_iterator& operator=(typename _Container::value_type&& __value)
|
_LIBCPP_INLINE_VISIBILITY insert_iterator& operator=(typename _Container::value_type&& __value)
|
||||||
|
@ -1302,6 +1302,28 @@ move(_Tp&& __t)
|
|||||||
return static_cast<typename remove_reference<_Tp>::type&&>(__t);
|
return static_cast<typename remove_reference<_Tp>::type&&>(__t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
|
||||||
|
template <class _Tp>
|
||||||
|
inline _LIBCPP_INLINE_VISIBILITY
|
||||||
|
_Tp&&
|
||||||
|
forward(typename std::remove_reference<_Tp>::type& __t)
|
||||||
|
{
|
||||||
|
return static_cast<_Tp&&>(__t);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class _Tp>
|
||||||
|
inline _LIBCPP_INLINE_VISIBILITY
|
||||||
|
_Tp&&
|
||||||
|
forward(typename std::remove_reference<_Tp>::type&& __t)
|
||||||
|
{
|
||||||
|
static_assert(!std::is_lvalue_reference<_Tp>::value,
|
||||||
|
"Can not forward an rvalue as an lvalue.");
|
||||||
|
return static_cast<_Tp&&>(__t);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
template <class _Tp,
|
template <class _Tp,
|
||||||
class = typename enable_if<
|
class = typename enable_if<
|
||||||
!is_lvalue_reference<_Tp>::value
|
!is_lvalue_reference<_Tp>::value
|
||||||
@ -1346,6 +1368,8 @@ template <class _Tp,
|
|||||||
_Tp
|
_Tp
|
||||||
forward(typename remove_reference<_Tp>::type&& __t) = delete;
|
forward(typename remove_reference<_Tp>::type&& __t) = delete;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
#else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
||||||
|
|
||||||
template <class _Tp>
|
template <class _Tp>
|
||||||
|
346
src/hash.cpp
346
src/hash.cpp
@ -157,7 +157,7 @@ __next_prime(size_t n)
|
|||||||
// Select first potential prime >= n
|
// Select first potential prime >= n
|
||||||
// Known a-priori n >= L
|
// Known a-priori n >= L
|
||||||
size_t k0 = n / L;
|
size_t k0 = n / L;
|
||||||
size_t in = std::lower_bound(indices, indices + M, n % L) - indices;
|
size_t in = std::lower_bound(indices, indices + M, n - k0 * L) - indices;
|
||||||
n = L * k0 + indices[in];
|
n = L * k0 + indices[in];
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
@ -170,302 +170,352 @@ __next_prime(size_t n)
|
|||||||
// small prime.
|
// small prime.
|
||||||
for (size_t j = 5; j < N - 1; ++j)
|
for (size_t j = 5; j < N - 1; ++j)
|
||||||
{
|
{
|
||||||
if (n % small_primes[j] == 0)
|
const std::size_t p = small_primes[j];
|
||||||
goto next;
|
const std::size_t q = n / p;
|
||||||
if (n / small_primes[j] < small_primes[j])
|
if (q < p)
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * p)
|
||||||
|
goto next;
|
||||||
}
|
}
|
||||||
// n wasn't divisible by small primes, try potential primes
|
// n wasn't divisible by small primes, try potential primes
|
||||||
{
|
{
|
||||||
size_t i = 211;
|
size_t i = 211;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
if (n % i == 0)
|
std::size_t q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 10;
|
i += 10;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 8;
|
i += 8;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 8;
|
i += 8;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 6;
|
i += 6;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 4;
|
i += 4;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
i += 10;
|
i += 10;
|
||||||
if (n % i == 0)
|
q = n / i;
|
||||||
break;
|
if (q < i)
|
||||||
if (n / i < i)
|
|
||||||
return n;
|
return n;
|
||||||
|
if (n == q * i)
|
||||||
|
break;
|
||||||
|
|
||||||
// This will loop i to the next "plane" of potential primes
|
// This will loop i to the next "plane" of potential primes
|
||||||
i += 2;
|
i += 2;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user