OFFSET
1,1
COMMENTS
Let p_1, p_2, p_3, ..., p_u be a set P of distinct prime numbers and let m_1, m_2, m_3, ..., m_u be a set V of variables. Then P is a Wieferich u-tuple if there exists a mapping from the elements of P to the elements of V such that each of the following congruences is satisfied: m_1^(m_2-1) == 1 (mod (m_2)^2), m_2^(m_3-1) == 1 (mod (m_3)^2), ..., m_u^(m_1-1) == 1 (mod (m_1)^2).
EXAMPLE
Irregular array starts as follows:
71, 3, 11;
359, 3, 11, 71, 331;
359, 307, 3, 11, 71, 331;
359, 307, 19, 3, 11, 71, 331;
487, 11, 71, 331, 359, 307;
487, 3, 11, 71, 331, 359, 307;
863, 23, 13;
863, 3, 11, 71, 331, 359, 23, 13;
863, 3, 11, 71, 331, 359, 307, 19, 13;
863, 467, 3, 11, 71, 331, 359, 23, 13;
863, 3, 11, 71, 331, 359, 307, 487, 23, 13;
863, 467, 3, 11, 71, 331, 359, 307, 19, 13;
...
The tuple 359, 3, 11, 71, 331 is a row of the array, because its members satisfy 359^(3-1) == 1 (mod 3^2), 3^(11-1) == 1 (mod 11^2), 11^(71-1) == 1 (mod 71^2), 71^(331-1) == 1 (mod 331^2) and 331^(359-1) == 1 (mod 359^2).
PROG
(PARI) addtovec(vec) = my(w=[], vmax=0); for(t=1, #vec, if(vecmax(vec[t]) > vmax, vmax=vecmax(vec[t]))); for(k=1, #vec, forprime(q=1, vmax, if(Mod(vec[k][#vec[k]], q^2)^(q-1)==1, w=concat(w, [0]); w[#w]=concat(vec[k], [q])))); w
removefromvec(vec) = my(w=[]); for(k=1, #vec, if(vecsort(vec[k])==vecsort(vec[k], , 8), w=concat(w, [0]); w[#w]=vec[k])); w
printfromvec(vec) = for(k=1, #vec, if(vec[k][1]==vec[k][#vec[k]], for(t=1, #vec[k]-1, print1(vec[k][t], ", ")); print("")))
forprime(p=1, , my(v=[[p]]); while(#v > 0, v=addtovec(v); printfromvec(v); v=removefromvec(v)))
CROSSREFS
KEYWORD
nonn,tabf
AUTHOR
Felix Fröhlich, Aug 05 2018
STATUS
approved