#得到长度为1,2,3,4。。。#ans(A211097)将包含Lyndon因子分解中的因子数#ansLs(A211098)将包含Lyndon分解中最大(即最左边)因子的大小#ansLw(A211099)将包含Lyndon因子分解中最大的(即最左边的)因子#ansRs(具有不同偏移量的A211095)将包含Lyndon分解中最小(即最右边)因子的大小#ansRw(具有不同偏移量的A211096)将包含Lyndon因子分解中最小的(即最右边的)因子答案:=[];答案:=[];ansLw:=[];答案:=[];答案:=[];M: =6;#研究长度为M的二进制向量对于n从1到M dot1:=binvecs(2^n,2^(n+1)-1);对于n1从1到nops(t1)dot2:=t1[n1];s2:=亚音阶(1=零,t2);t3:=convert2string(s2);t4:=因式分解(t3);lprint(n,t2,t4,nops(t4));ans:=[op(ans),nops(t4)];ansLs:=[op(ansLs),长度(t4[1]);ansLw:=[op(ansLw),t4[1];ansRs:=[op(ansRs),长度(t4[nops(t4)])];ansRw:=[op(ansRw),t4[nops(t4)]];外径:外径:#这将使用以下过程,当然必须先加载这些过程:#binvecs生成从n1到n2的所有数字的二进制向量(Maple)binvecs:=proc(n1,n2)局部lis,t1,t2,len,n;lis:=[];对于n从n1到n2 dot1:=换算(n,基数,2);长度:=nops(t1);t2:=[顺序(t1[长度+1-i],i=1..len)];lis:=[op(lis),t2];外径;lis系统;结束;#将列表转换为字符串(Maple)convert2string:=proc(x)局部a,t1,i;a: =“”;对于从1到nops(x)的i,做a:=cat(a,x[i]);外径;a;结束;#Melancon的“uncat”uncat:=proc(字)如果长度(字)<=1,则[字]其他映射(过程(x,y)子串(y,x..x)结束,[$1..长度(字)],字)金融机构;结束:#Melancon对Lyndon因式分解Duval算法的实现因式分解:=过程(字)局部F、i、j、k、n、w;全球联合国反酷刑委员会;w:=uncat(字);n:=长度(字);k:=0;F:=空;而k<n doi:=k+1;j:=k+2;当j<n+1时如果lexorder(w[i],w[j]),则如果w[i]=w[j],则i:=i+1;j:=j+1;其他的i:=k+1;j:=j+1;金融机构否则就断了金融机构;外径;当k<i时F:=F,k+(j-i);k:=k+(j-i);外径;外径;映射(proc(x,y)如果x<nops(y),则x+1,否则nops(y)fi结束,[op(1..nops([F])-1,[F]),w);压缩(proc(x,y)[x,y]结束,[1,op(%)],[F]);map(proc(x,y)cat(op(1,x)…op(2,x),y))结束,%,w);结束: