Ormiston pairs: Difference between revisions

m
C++ - simplified code
m (→‎{{header|Wren}}: Removed a redundant line.)
m (C++ - simplified code)
Line 117:
=={{header|C++}}==
{{libheader|Primesieve}}
<syntaxhighlight lang="cpp">#include <algorithmarray>
#include <iomanip>
#include <iostream>
Line 123:
 
#include <primesieve.hpp>
 
class digit_set {
public:
digit_set() {}
explicit digit_set(uint64_t n) {
for (; n > 0; n /= 10)
++count_[n % 10];
}
 
bool operator==(const digit_set& other) const {
return std::equal(count_, count_ + 10, other.count_);
}
 
private:
int count_[10] = {};
};
 
class ormiston_pair_generator {
Line 148 ⟶ 132:
auto digits = digits_;
prime_ = pi_.next_prime();
digits_ = digit_setget_digits(prime_);
if (digits_ == digits)
return std::make_pair(prime, prime_);
Line 155 ⟶ 139:
 
private:
static std::array<int, 10> get_digits(uint64_t n) {
std::array<int, 10> result = {};
for (; n > 0; n /= 10)
++count_result[n % 10];
return result;
}
primesieve::iterator pi_;
uint64_t prime_;
digit_setstd::array<int, 10> digits_;
};
 
1,777

edits