|
PROG
|
(Perl) use ntheory ":all"; foroddcomposites { say if is_perrin_pseudoprime($_, 2); } 1e8; # Dana Jacobsen, Aug 03 2016
(PARI) perrin2(n) = {
my(M, L, S, j, A, B, C, D);
M=Mod( [0, 1, 0; 0, 0, 1; 1, 1, 0], n)^n;
L=Mod( [0, 1, 0; 0, 0, 1; 1, 0, -1], n)^n;
S=[ 3*L[3, 2]-L[3, 3], 3*L[2, 2]-L[2, 3], 3*L[1, 2]-L[1, 3], \
3*M[3, 1]+2*M[3, 3], 3*M[1, 1]+2*M[1, 3], 3*M[2, 1]+2*M[2, 3] ];
if (S[5] != 0 || S[2] != n-1, return(0));
j = kronecker(-23, n);
if (j == -1, B=S[3]; A=1+3*B-B^2; C=3*B^2-2; if(S[1]==A && S[3]==B && S[4]==B && S[6] == C && B != 3 && B^3-B==1, return(1), return(0)));
if (S[1] == 1 && S[3] == 3 && S[4] == 3 && S[6] == 2, return(1));
if (j == 1 && S[1] == 0 && S[6] == n-1 && S[3] != S[4] && S[3]+S[4] == n-3 && (S[3]-S[4])^2 == Mod(-23, n), return(1));
return(0);
|