儿童:=proc(r)局部L,x,p,q,t,r;
x: =r[1];
五十: =r[2];
t: =L[-1];
p: =t[1];q: =下一素数(p);
如果t[2]=1,则t:=[q,1];
否则t:=[p,t[2]-1],[q,1]
fi;
R: =[x*q/p,[op(L[1..-2]),t]];
如果nops(L)>=2,则
p: =L[-2][1];
q: =L[-1][1];
如果L[-2][2]=1,则t:=[q,L[-1][2]+1]
否则t:=[p,L[-2][2]-1],[q,L[-1][2]+1]
fi;
R: =R,[x*q/p,[op(L[1..-3]),t]]
fi;
【右】
结束进程:
f: =程序(n)
使用priqueue;
局部pq、t、x、V、F;
初始化(pq);
插入([-2^n,[[2,n]],pq);
做
五: =提取物(pq);
x: =-V[1];F: =伏[2];
如果(x*add(t[2]/t[1],t=F))mod-mil(t[2]+1,t=F)=0
然后返回(x)fi;
对于儿童中的t(V),插入(t,pq)od;
od;
结束进程:
1,0,seq(f(n),n=2..40);
|