Wagstaff primes: Difference between revisions
Content added Content deleted
m (→{{header|Java}}: removed unnecessary var) |
(Added C++ solution) |
||
Line 83: | Line 83: | ||
</pre> |
</pre> |
||
=={{header|C++}}== |
|||
{{libheader|GMP}} |
|||
{{libheader|Primesieve}} |
|||
<syntaxhighlight lang="cpp">#include <gmpxx.h> |
|||
#include <primesieve.hpp> |
|||
#include <iostream> |
|||
using big_int = mpz_class; |
|||
std::string to_string(const big_int& num, size_t n) { |
|||
std::string str = num.get_str(); |
|||
size_t len = str.size(); |
|||
if (len > n) { |
|||
str = str.substr(0, n / 2) + "..." + str.substr(len - n / 2); |
|||
str += " ("; |
|||
str += std::to_string(len); |
|||
str += " digits)"; |
|||
} |
|||
return str; |
|||
} |
|||
bool is_probably_prime(const big_int& n) { |
|||
return mpz_probab_prime_p(n.get_mpz_t(), 25) != 0; |
|||
} |
|||
int main() { |
|||
const big_int one(1); |
|||
primesieve::iterator pi; |
|||
pi.next_prime(); |
|||
for (int i = 0; i < 24;) { |
|||
uint64_t p = pi.next_prime(); |
|||
big_int n = ((one << p) + 1) / 3; |
|||
if (is_probably_prime(n)) |
|||
std::cout << ++i << ": " << p << " - " << to_string(n, 30) << '\n'; |
|||
} |
|||
}</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
1: 3 - 3 |
|||
2: 5 - 11 |
|||
3: 7 - 43 |
|||
4: 11 - 683 |
|||
5: 13 - 2731 |
|||
6: 17 - 43691 |
|||
7: 19 - 174763 |
|||
8: 23 - 2796203 |
|||
9: 31 - 715827883 |
|||
10: 43 - 2932031007403 |
|||
11: 61 - 768614336404564651 |
|||
12: 79 - 201487636602438195784363 |
|||
13: 101 - 845100400152152934331135470251 |
|||
14: 127 - 567137278201564...101238628035243 (38 digits) |
|||
15: 167 - 623574031927851...838653121833643 (50 digits) |
|||
16: 191 - 104618362256444...574077339085483 (58 digits) |
|||
17: 199 - 267823007376498...963798805883563 (60 digits) |
|||
18: 313 - 556246623937737...099018130434731 (94 digits) |
|||
19: 347 - 955624423329196...712921903606443 (104 digits) |
|||
20: 701 - 350675726769891...862167823854251 (211 digits) |
|||
21: 1709 - 961925272487010...857299070528171 (514 digits) |
|||
22: 2617 - 208150470990263...847933435947691 (788 digits) |
|||
23: 3539 - 737960982013072...304686486497963 (1065 digits) |
|||
24: 5807 - 401849623734300...466686663568043 (1748 digits) |
|||
</pre> |
|||
=={{header|F_Sharp|F#}}== |
=={{header|F_Sharp|F#}}== |