Ormiston pairs: Difference between revisions
C++ solution rewritten using primesieve library
(→{{header|Go}}: Updated in line with latest Wren version.) |
(C++ solution rewritten using primesieve library) |
||
Line 116:
=={{header|C++}}==
{{libheader|Primesieve}}
<syntaxhighlight lang="cpp">#include <algorithm>
#include <cassert>▼
#include <iomanip>
#include <iostream>
#include <
if (limit > 0)▼
if (sieve[p]) {▼
sieve[q] = false;▼
}▼
}▼
}▼
class digit_set {
public:
explicit digit_set(uint64_t n) {
for (; n > 0; n /= 10)
++count_[n % 10];
Line 153 ⟶ 138:
private:
int count_[10] = {};
▲};
class ormiston_pair_generator {
public:
ormiston_pair_generator() { prime_ = pi_.next_prime(); }
std::pair<uint64_t, uint64_t> next_pair() {
prime_ = pi_.next_prime();
return std::make_pair(prime, prime_);
▲ }
▲ }
private:
primesieve::iterator pi_;
uint64_t prime_;
digit_set digits_;
};
int main() {
ormiston_pair_generator generator;
std::cout << "First 30 Ormiston pairs:\n";
for (
std::cout << '(' << std::setw(5) << p1 << ", " << std::setw(5) << p2
<< ')' << ((count + 1) % 3 == 0 ? '\n' : ' ');
▲ if (digit_set(p2) == digit_set(p1)) {
}
std::cout << '\n';
▲ count1 = count;
for (uint64_t limit = 1000000; limit <= 1000000000; ++count) {
auto [p1,
if (p1 > limit)
▲ if (count <= 30)
limit
}
}
▲ std::cout << "Number of Ormiston pairs < 10,000,000: " << count2 << '\n';
}</syntaxhighlight>
Line 194:
(75913, 75931) (76213, 76231) (76579, 76597)
Number of Ormiston pairs <
Number of Ormiston pairs <
Number of Ormiston pairs <
Number of Ormiston pairs < 1000000000: 326926
</pre>
|