40 lines
954 B
Text
40 lines
954 B
Text
wagstaffPair[p_Integer] := Module[{m},
|
|
If[Not[OddQ[p]], Return[{False, Null}]];
|
|
If[Not[PrimeQ[p]], Return[{False, Null}]];
|
|
|
|
m = Quotient[2^p + 1, 3];
|
|
|
|
If[Not[PrimeQ[m]], Return[{False, Null}]];
|
|
|
|
{True, m}
|
|
]
|
|
|
|
findNWagstaffPairs[n_Integer] := Module[{pairs = {}, count = 0, i = 2},
|
|
While[count < n,
|
|
With[{result = wagstaffPair[i]},
|
|
If[First[result],
|
|
AppendTo[pairs, {i, Last[result]}];
|
|
count++
|
|
]
|
|
];
|
|
i++
|
|
];
|
|
pairs
|
|
]
|
|
|
|
printlnWagstaff[pair_, maxDigitDisplay_: 20] := Module[{p, m, mStr, uMiddle, lMiddle},
|
|
{p, m} = pair;
|
|
mStr = ToString[m];
|
|
|
|
If[StringLength[mStr] > maxDigitDisplay,
|
|
uMiddle = Ceiling[maxDigitDisplay/2];
|
|
lMiddle = Floor[maxDigitDisplay/2];
|
|
mStr = StringJoin[{StringTake[mStr, uMiddle], "...",
|
|
StringTake[mStr, {-lMiddle}], " (", ToString[StringLength[mStr]],
|
|
" digits)"}]
|
|
];
|
|
|
|
Print["p = ", p, ", m = ", mStr]
|
|
]
|
|
|
|
Map[printlnWagstaff, findNWagstaffPairs[24]];
|