gc<-function(nn,r,s){#获取总计数。nn=n的向量{0lnn<-length(nn)#nn是n的向量。x的s1=r*n,s2=s*n^2gcout<-矩阵(0,lnn,3)for(i in 1:lnn){#{1n<-nn[i]xi<-getxs(n,r,s)#包含x的矩阵(x是一个4 ple,s1=rn,s2=sn^2)if(is.null(xi))next如果(长度(xi)==4)xi<-矩阵(xi,1,4)dxi<-dim(xi)[1]ci<-getcount(xi)#获取xi中每个x的计数之和gcout[i,]<-c(n,dxi,ci)}#c(n,x的数量,计数)}#}1gcout#矩阵nnx3;行是c(n,基本排序x的数量,总计数)} #}getxs<-函数(n,r=2,s=2,eps=1e-6){#获取基元x的#{0{eps2<-eps^2输出<-NULLxs<-空rn<-r*nsn2<-s*n^2for(h in round(sqrt(sn2/4)):round(sqlt(sn2))){#1sn21<-sn2-h^2如果(sn21<0)nextfor(i in round(sqrt(sn21/3)):round(sqlt(sn21))){#{2#line 10sn22<-sn21-i^2如果(sn22<0)下一个for(j in round(sqrt(sn22/2)):round(sqlt(sn22))){#{3sn23<-sn22-j^2如果(sn23<0)下一个k<-sqrt(sn23+eps2)if(k%%1<2*eps){k<-round(k)}else nextx<-sort(c(h,i,j,k))#x是一个4ple,s2=s*n^2if(总和(x^2)!=sn2)下一个#以防万一if(gcd(x)>1)next只保留原语x的第20行s1<-总和(x)if(s1<rn)next#没有符号提示会有帮助xs<-rbind(xs,x)}}}#1}1}2}3#已找到所有xif(is.null(xs))返回(null)if(长度(xs)==4)xs<-矩阵(xs,1,4)xs<-unique(xs)#消除重复项lxs<-长度(xs)/4如果(lxs==1)xs<-矩阵(xs,1,4)for(1:lxs中的i){#{4outi<-NULL#第30行xi<-xs[i,]#探索符号翻转如果(sum(xi)==rn){outi<-matrix(xi,1,4)}其他{#{5#xi正常,则不可能发生翻转flipxi<-xi%*%flipmat#flipmat是4x14#第30行对于(1:14中的j){#{6#检查所有可能的翻转if(flipxi[j]==rn)outi<-rbind(outi,sort(xi*flipmat[,j]))}}#)5}6if(is.null(outi))nextouti<-unique(outi)#消除重复项out<-rbind(out,outi)}#}4if(长度(out)==4)out<-矩阵(out,1,4)包含唯一排序基元x的out矩阵(4列)}#第41行getcount<-function(X){#从getxs(n,r,s)的输出中获取总计数g<-c(0,24,12,6,4,0,0,1)tc<-0#总计数if(is.null(X))返回(null)dX<-尺寸(X)[1]for(iin1:dX){#{1xi<-X[i,]tabi<-表(xi)tc<-tc+g[总和(表^2)/2]}#}1热带气旋}gcd<-function(v){#查找向量v元素的g.c.d。lv<-长度(v)如果(lv==0)返回(0)如果(lv==1)返回(v)g<-gcd2(v[1],v[2])如果(lv==2)返回(g)对于(iin3:lv)g<-gcd2(g,v[i])克}gcd2<-function(a,b){#获取两个整数的g.c.d。a<-abs(a)b<-abs(b)如果(a==0)返回(b)x<-1而(x>0){x<-b%%ab<-aa<-x}b}flipmat<-矩阵(c(-1,1,1,1,-1,-1,-1,1,1.1,-1,-1-,-1,1.1,-1,1,1,1,-1,1,-1,1,-1,1,1