(PARI)顺序(m)={kk=1;ok=0;while(!ok,mk=m^kk;if(mk^2==mk,ok=1,kk++););返回(kk);}
a(n)={ret=0;m=矩阵(2,2);对于(i=0,n-1,m[1,1]=Mod(i,n);对于
(Python)#有关更快的版本,请参阅链接
来自itertools导入产品
def mmm2(A,B,modder):#2x2的矩阵乘法模
return((A[0]*B[0]+A[1]*B[2])%修改器,(A[0]*B[1]+A[1]*B[3])%修改程序,
(A[2]*B[0]+A[3]*B[2])%模型,(A[2]*B[1]+A[3]*B[3])%模型)
定义顺序(A,modder):
Ak,k=A,1
而mmm2(Ak,Ak,modder)!=Ak:Ak,k=mmm2(Ak,A,modder),k+1
返回k
def a(n):返回值(产品中a的订单(a,n)(范围(n),重复=4))
打印([a(n)代表范围(1,12)中的n])#迈克尔·布拉尼基2021年1月26日