n=20;(*此处选择n的值*)
e=表[2,{n}];(*序列e*)
做[
DD=除数[k];
e[[k]]=(2^k-总和[DD[[j]]e[[DD[]]],{j,1,长度[DD]-1}])/
k、 {k,2,n}]
PP=整数分区[n];核电站=
长度[PP];(*n*的分区列表)
(*循环的最大长度,单位为σ’*)
mlcm=应用[Max,Table[Apply[LCM,PP[[p]]],{p,npp}]];
(*n的分解对应于分区*)
P=表[0,{i,npp},{j,n}];
Do[Do[P[[ipp,PP[[ipp,i]]]++,{i,Length[PP[[ipp]]}],{ipp,npp}]
EmptyList=表[0,{j,mlcm}];(*用于初始化规范(sigma')*)
Vn=0;执行[(*主循环通过n*的所有分区)
PPP=PP[[p]];np=长度[PPP];(*当前分区*)
Spec=空列表;(*规范初始化(sigma')*)
divsets={};
nd=1;
Do[(*k是当前Partition元素的索引*)
DD=除数[PPP[[k]]];
附加到[divsets,DD];
nd*=长度[DD],{k,1,np}];
(*divsets是循环长度除数集的列表\
西格玛*)
笛卡尔=元组[分集];(*nd是笛卡尔的长度*)
Do[(*循环笛卡尔积*)
乘积=笛卡尔[[id]];
npr=长度[产品];
lcm=1;prx=1;撬=1;
(*定理2*)
做[
lcm=lcm[lcm,产品[[ipr]]];
prx*=产品[[ipr]];
撬*=e[[产品[[ipr]]],{ipr,npr}];
规范[[lcm]]+=prx*撬/lcm,{id,nd}];
(*定理1*)
分子=产品[i^Spec[[i]]规范[[i]!,{i,长度[Spec]}];
分母r=乘积[i^P[[P,i]]P[[P,i]]!,{i,n}];
总和=分子/分母r^2;
Vn+=总和,{p,npp}]
打印[{“V_n=”,Vn}](*马尔科·卡里克2016年1月30日*)