关于子集阶最大值问题 我的思考与结论
陈皮糖喵
2026年08月06日 13:06
我爱数学

(大佬们能不能帮我看看我的证明有没有问题 求求[可怜]) (有些东西没有系统学过 公式也是手打的 所以可能表述有问题 请见谅)

也许你在学集合时遇到过类似这样的问题: 集合 S={1,2,..,10} 的满足“x属于A则2x不属于A”的子集A的阶(元素数量)最大是多少?

这个问题并不难。用枚举法就好了——可以分成 {1,2,4,8}, {3,6}, {5,10}, {7}, {9},然后每个集合里隔一个取一个(方案一);也可以取 {6,7,8,9,10},不取 {3,4,5},取 {2},不取 {1}(方案二)。答案都是 6。

夹在小学六年级和初一之间正在暑假的我见到这个问题后便开始思考:如果推广到 集合 S={1,2,..,n} 的满足“x属于A则kx不属于A”的子集A的阶最大是多少? 答案能否通过一个公式得到呢?

事实上数学家们早就得到了结论:|A|max = Σ(i>=0) (-1)^i [n/(k^i)],[] 表示向下取整。对于计算机而言,这个公式已经足够。但能不能进一步化简,得到一个更优美的形式呢?

图1、图2 是我在 WPS 上写的推导过程。图1前半部分简略探讨了方案一,得到一个并不友好的结论;之后都是对方案二的探讨,最终得到了一个有趣的结论: |A|max = (k/(k+1))n + (n的k进制表示下偶数位的和 - 奇数位的和)/(k+1) 图2最后说明了必然整除。

图3 是我在平板上的草稿(有图有真相),错误很多。

用我的公式计算上述例子:n=10 写成二进制是 1010,偶数位数字和=0,奇数位数字和=2,代入公式 (2/3)×10 + (0-2)/3 = 6,和枚举结果一致。

图4 是一个代码,对于 n>=k>=2 且 n<=1000 的所有情况进行了验证。逻辑是对比递推公式和我的公式的结果是否相同。似乎没有问题。

但我依然不确定我的推导是否严谨,尤其是进制展开那部分的处理。如果大佬们发现问题了请告诉我,万分感谢!

图1
图2
图3(软件 学而思学习机 学而思笔记)
图4