非负整数偶乘积排序序列的猜想验证及数学原理咨询
我最近遇到了一个数学问题,想请大家帮忙验证我的猜想,并且搞清楚背后的逻辑。
问题描述
我想要找出所有正整数m和n的偶乘积(注:原描述提了非负整数,但示例用的是正整数,代码也枚举1到2n的整数),将这些乘积排序后得到一个序列。举个例子,像1×6=6、2×3=6、6×1=6、3×2=6,这些都是得到6的不同组合。
我的猜想
我自己琢磨后觉得,这个排序后的序列其实就是按从小到大排列的偶数,每个偶数2j重复出现的次数等于2j的正约数个数(也就是用DivisorSigma[0, 2j]计算出来的结果)。但我实在搞不懂为什么这个结论是对的——说实话,我写代码比做数学推导顺手多了,所以想请大家帮忙正式验证这个猜想是否成立,如果成立的话,背后的数学原理是什么。
问题的由来
这个问题是我在模拟两人纸牌游戏“War”时遇到的:我用的牌组有m种花色、n种点数,需要找出能把牌组平均分给两人的m和n,这就要求m×n必须是偶数。后来我用Mathematica折腾这个问题的时候,还查了OEIS,最后找到了两个可以计算这个排序后乘积序列的函数。
测试用的Mathematica函数
第一个函数是通过枚举所有组合筛选偶乘积再排序:
createSortedEvenProducts1[n_]:=(allCombinations=Flatten[Table[Table[{i,j,i*j},{i,1,2*n}],{j,1,2*n}],1];evenProductCombinations={};Table[If[EvenQ[allCombinations[[i,3]]]==True,AppendTo[evenProductCombinations,allCombinations[[i]]],None],{i,1,Length[allCombinations]}];sortedEvenProducts=Take[Map[Last,SortBy[evenProductCombinations, N@*Last]],Length[Flatten[Table[Table[2n,{i,1,DivisorSigma[0,2 j]}],{j,1,n}]]]])
第二个函数是直接根据我的猜想生成序列:
createSortedEvenProducts2[n_]:=Flatten[Table[Table[2*j,{i,1,DivisorSigma[0,2 *j]}],{j,1,n}]];
测试结果
我用n=10测试了这两个函数,createSortedEvenProducts1[10]和createSortedEvenProducts2[10]都输出了完全相同的序列:
{2,2,4,4,4,6,6,6,6,8,8,8,8,10,10,10,10,12,12,12,12,12,12,14,14,14,14,16,16,16,16,16,18,18,18,18,18,18,20,20,20,20,20,20}
备注:内容来源于stack exchange,提问作者Romogi

