关于gcd与lcm的一些讨论与结论
众所周知,对于
a,b∈Z+,有
a⋅b=gcd(a,b)⋅lcm(a,b)但是对于3个数,四个数,乃至更多的数呢?
回到初始的两个数,对两个质数的次方取gcd,如
gcd(px,py)=pmin(x,y),同理
lcm(px,py)=pmax(x,y)推广到合数的情况,我们会发现对于合数的不同素因数之间,不同的素数之间都是独立的,对不同的素数,gcd取幂次的最小值,lcm取幂次的最大值.
为此,我们可以先引出结论
lcm(a,b,c)=gcd(a,b)⋅gcd(b,c)⋅gcd(a,c)a⋅b⋅c⋅gcd(a,b,c)
不妨先考虑a,b,c均为素数次方的简单情况令
a=pu,b=pv,c=pw则
lcm(a,b,c)=pmax(u,v,w)而由组合数学,可以得下式
max(u,v,w)=T⊆{u,v,w}∑(−1)∣T∣+1min(T)
由此将
pmax(u,v,w)拆开,就会有
pu+v+w−min(u,v)−min(u,w)−min(v,w)+min(u,v,w)
而又有定理
gcd(px,py)=pmin(x,y)故
对三个数均为素数的次方的情况,上面得出的结论成立.而除此之外,由于不同素因数之间都是独立的,因此上述结论 依然成立.
那么我们对数的数量进行进一步的讨论.首先我们需要对上面那个基于组合数学的max-min转换进行推广
其中
T⊆{u,v,w}意为T为集合
{u,v,w}的子集,
∣T∣为集合T大大小
对上面这个式子进一步进行归纳则可以设一个集合S,则可以写成
max(S)=T⊆S∑(−1)∣T∣+1min(T)
与此同时,这一条性质的反向也是成立的
min(S)=T⊆S∑(−1)∣T∣+1max(T)
这两条性质可以通过对S中的元素进行排序,计算每个数对最值为这个数的子集数量的贡献得出
现简单证明max(S)的式子,对从大到小排序后的集合S选取其中的某个数选取最小值为这个数的子集,则可以发现这个数前面的数字可以任意地选入这个子集,而这个数后面的数则一个都不可以选入,不难发现对于这个数之前的数,选或者不选两个选项将分别对应子集元素数量为奇数和为偶数两种情况,且总是一一对应,因此,只要这个数不是第一个数,那么这个数为最值得子集最终的贡献总是为0,因此求和的最终结果就是最左边的那个数.由此证毕
有了这条结论之后我们可以我们可以简单得再来处理更多因数的情况了
lcm(S)=T⊆S∏gcd(T)−1∣T∣+1