Strange unique prime triplets: Difference between revisions
Content added Content deleted
(added Raku programming solution) |
(Added C++ solution) |
||
Line 109: | Line 109: | ||
Found 241580 strange unique prime triplets up to 1000 |
Found 241580 strange unique prime triplets up to 1000 |
||
</pre> |
</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}}== |
=={{header|Delphi}}== |
||
{{libheader| System.SysUtils}} |
{{libheader| System.SysUtils}} |