#包括“bpol/lhca.h”#包括“bits/bitcombcolex.h”#包括“bpol/bitpol-irred.h”#包括“bpol/bitpol-prolimitive.h”#包括“bpol/gf2n.h”//用于梅森数的因式分解#包括“位/打印仓.h”#包括“fxtio.h”#包括“fxttypes.h”//ulong#包括“bits/bitsperlong.h”#include“nextarg.h”//NXARG()//%生成最小重量低位LHCA规则(LHCA:=线性混合元胞自动机)。//输出取决于BITS_PER_LONG空隙打印规则(ulong-rr、ulong-cc、ulong-pn){//print_bin(“r=”,rr,pn);print_bin(“c=”,cc,pn);print_idx_seq(“r=”,rr);//print_idx_seq(“c=”,抄送);cout<<endl;}// -------------------------整数main(int argc,char**argv){ulong nn=BITS_PER_LONG-1;NXARG(nn,“最大位数”);ulong pn=nn+1;ulong m=3;NXARG(m,“搜索权重规则1,2,…,m”);cout<<setw((int)pn)<<“c=多项式”;cout<<“r=LHCA规则”;cout<<endl;对于(ulong n=1;n<=nn;++n){ulong r=0,c=0;cout<<setw(4)<<n<<“:”;ulong h=1UL<<(n-1);ulong n2=h<<1;GF2n::初始化(n);//梅森数的因式分解ulong编号;//位数对于(nb=1;nb<=m;++nb){c=0;r=first_comb(nb);do//尝试nb位的所有组合{c=lhca2poly(r,n);如果(0==bitpol _irreducible _q(c,h))转到下一个;如果(0!=test_bitpol_primitive(c,h,GF2n::mfact_))转到下一步;转到打印;//(仅限最小重量规则)下一步:r=next_colex_comb(r);}而(r-->