Wagstaff primes: Difference between revisions
Content added Content deleted
(Added Go) |
(Julia implementation) |
||
Line 103: | Line 103: | ||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
2: 5 - 11 (2 digits) |
|||
p = 3, m = 3 |
|||
3: 7 - 43 (2 digits) |
|||
p = 5, m = 11 |
|||
4: 11 - 683 (3 digits) |
|||
p = 7, m = 43 |
|||
5: 13 - 2731 (4 digits) |
|||
p = 11, m = 683 |
|||
6: 17 - 43691 (5 digits) |
|||
p = 13, m = 2731 |
|||
7: 19 - 174763 (6 digits) |
|||
p = 17, m = 43691 |
|||
8: 23 - 2796203 (7 digits) |
|||
p = 19, m = 174763 |
|||
9: 31 - 715827883 (9 digits) |
|||
p = 23, m = 2796203 |
|||
10: 43 - 2932031007403 (13 digits) |
|||
p = 31, m = 715827883 |
|||
11: 61 - 768614336404564651 (18 digits) |
|||
p = 43, m = 2932031007403 |
|||
12: 79 - 2014876366...8195784363 (24 digits) |
|||
p = 61, m = 768614336404564651 |
|||
13: 101 - 8451004001...1135470251 (30 digits) |
|||
p = 79, m = 2014876366...8195784363 (24 digits) |
|||
p = 101, m = 8451004001...1135470251 (30 digits) |
|||
p = 127, m = 5671372782...8628035243 (38 digits) |
|||
p = 167, m = 6235740319...3121833643 (50 digits) |
|||
p = 191, m = 1046183622...7339085483 (58 digits) |
|||
p = 199, m = 2678230073...8805883563 (60 digits) |
|||
p = 313, m = 5562466239...8130434731 (94 digits) |
|||
p = 347, m = 9556244233...1903606443 (104 digits) |
|||
p = 701, m = 3506757267...7823854251 (211 digits) |
|||
p = 1709, m = 9619252724...9070528171 (514 digits) |
|||
p = 2617, m = 2081504709...3435947691 (788 digits) |
|||
p = 3539, m = 7379609820...6486497963 (1065 digits) |
|||
p = 5807, m = 4018496237...6663568043 (1748 digits) |
|||
</pre> |
|||
=={{header|BASIC256}}== |
=={{header|BASIC256}}== |
||
Line 476: | Line 481: | ||
23 3539 45.089 |
23 3539 45.089 |
||
24 5807 181.280</syntaxhighlight> |
24 5807 181.280</syntaxhighlight> |
||
=={{header|Julia}}== |
|||
* Requires Primes.jl |
|||
<syntaxhighlight lang=julia> |
|||
using Primes |
|||
function wagstaffpair(p::Integer) |
|||
isodd(p) || return (false, nothing) |
|||
isprime(p) || return (false, nothing) |
|||
m = (2^big(p) + 1) ÷ 3 |
|||
isprime(m) || return (false, nothing) |
|||
return (true, m) |
|||
end |
|||
function findn_wagstaff_pairs(n_to_find::T) where T <: Integer |
|||
pairs = Tuple{T, BigInt}[] |
|||
count = 0 |
|||
i = 2 |
|||
while count < n_to_find |
|||
iswag, m = wagstaffpair(i) |
|||
iswag && push!(pairs, (i, m)) |
|||
count += iswag |
|||
i += 1 |
|||
end |
|||
return pairs |
|||
end |
|||
function println_wagstaff(pair; max_digit_display::Integer=20) |
|||
p, m = pair |
|||
mstr = string(m) |
|||
if length(mstr) > max_digit_display |
|||
umiddle = cld(max_digit_display, 2) |
|||
lmiddle = fld(max_digit_display, 2) |
|||
mstr = join((mstr[1:umiddle], "...", mstr[end-lmiddle+1:end], |
|||
" ($(length(mstr)) digits)")) |
|||
end |
|||
println("p = $p, m = $mstr") |
|||
end |
|||
foreach(println_wagstaff, findn_wagstaff_pairs(24)) |
|||
</syntaxhighlight> |
|||
<pre> |
|||
p = 3, m = 3 |
|||
p = 5, m = 11 |
|||
p = 7, m = 43 |
|||
p = 11, m = 683 |
|||
p = 13, m = 2731 |
|||
p = 17, m = 43691 |
|||
p = 19, m = 174763 |
|||
p = 23, m = 2796203 |
|||
p = 31, m = 715827883 |
|||
p = 43, m = 2932031007403 |
|||
p = 61, m = 768614336404564651 |
|||
p = 79, m = 2014876366...8195784363 (24 digits) |
|||
p = 101, m = 8451004001...1135470251 (30 digits) |
|||
p = 127, m = 5671372782...8628035243 (38 digits) |
|||
p = 167, m = 6235740319...3121833643 (50 digits) |
|||
p = 191, m = 1046183622...7339085483 (58 digits) |
|||
p = 199, m = 2678230073...8805883563 (60 digits) |
|||
p = 313, m = 5562466239...8130434731 (94 digits) |
|||
p = 347, m = 9556244233...1903606443 (104 digits) |
|||
p = 701, m = 3506757267...7823854251 (211 digits) |
|||
p = 1709, m = 9619252724...9070528171 (514 digits) |
|||
p = 2617, m = 2081504709...3435947691 (788 digits) |
|||
p = 3539, m = 7379609820...6486497963 (1065 digits) |
|||
p = 5807, m = 4018496237...6663568043 (1748 digits) |
|||
</pre> |
|||
=={{header|Java}}== |
=={{header|Java}}== |