Strange unique prime triplets: Difference between revisions

Added C++ solution
(added Raku programming solution)
(Added C++ solution)
Line 109:
Found 241580 strange unique prime triplets up to 1000
</pre>
 
=={{header|C++}}==
<lang cpp>#include <iomanip>
#include <iostream>
#include <vector>
 
std::vector<bool> prime_sieve(size_t limit) {
std::vector<bool> sieve(limit, true);
sieve[1] = false;
for (size_t i = 0; i < limit; i += 2)
sieve[i] = false;
for (size_t p = 3; p * p < limit; p += 2) {
if (sieve[p]) {
size_t inc = 2 * p;
for (size_t q = p * p; q < limit; q += inc)
sieve[q] = false;
}
}
return sieve;
}
 
void strange_unique_prime_triplets(int limit, bool verbose) {
std::vector<bool> sieve = prime_sieve(limit * 3);
std::vector<int> primes;
for (int p = 3; p < limit; p += 2) {
if (sieve[p])
primes.push_back(p);
}
size_t n = primes.size();
size_t count = 0;
if (verbose)
std::cout << "Strange unique prime triplets < " << limit << ":\n";
for (size_t i = 0; i + 2 < n; ++i) {
for (size_t j = i + 1; j + 1 < n; ++j) {
for (size_t k = j + 1; k < n; ++k) {
int sum = primes[i] + primes[j] + primes[k];
if (sieve[sum]) {
++count;
if (verbose) {
std::cout << std::setw(2) << primes[i] << " + "
<< std::setw(2) << primes[j] << " + "
<< std::setw(2) << primes[k] << " = " << sum
<< '\n';
}
}
}
}
}
std::cout << "\nCount of strange unique prime triplets < " << limit
<< " is " << count << ".\n";
}
 
int main() {
strange_unique_prime_triplets(30, true);
strange_unique_prime_triplets(1000, false);
return 0;
}</lang>
 
{{out}}
<pre>
Strange unique prime triplets < 30:
3 + 5 + 11 = 19
3 + 5 + 23 = 31
3 + 5 + 29 = 37
3 + 7 + 13 = 23
3 + 7 + 19 = 29
3 + 11 + 17 = 31
3 + 11 + 23 = 37
3 + 11 + 29 = 43
3 + 17 + 23 = 43
5 + 7 + 11 = 23
5 + 7 + 17 = 29
5 + 7 + 19 = 31
5 + 7 + 29 = 41
5 + 11 + 13 = 29
5 + 13 + 19 = 37
5 + 13 + 23 = 41
5 + 13 + 29 = 47
5 + 17 + 19 = 41
5 + 19 + 23 = 47
5 + 19 + 29 = 53
7 + 11 + 13 = 31
7 + 11 + 19 = 37
7 + 11 + 23 = 41
7 + 11 + 29 = 47
7 + 13 + 17 = 37
7 + 13 + 23 = 43
7 + 17 + 19 = 43
7 + 17 + 23 = 47
7 + 17 + 29 = 53
7 + 23 + 29 = 59
11 + 13 + 17 = 41
11 + 13 + 19 = 43
11 + 13 + 23 = 47
11 + 13 + 29 = 53
11 + 17 + 19 = 47
11 + 19 + 23 = 53
11 + 19 + 29 = 59
13 + 17 + 23 = 53
13 + 17 + 29 = 59
13 + 19 + 29 = 61
17 + 19 + 23 = 59
19 + 23 + 29 = 71
 
Count of strange unique prime triplets < 30 is 42.
 
Count of strange unique prime triplets < 1000 is 241580.
</pre>
 
=={{header|Delphi}}==
{{libheader| System.SysUtils}}
1,777

edits