烧脑
2026-05-15
ChenReal
16
一个神奇的数字:6174
6174 是著名的卡普雷卡尔常数(Kaprekar's constant),也叫四位数黑洞数。
6174 是著名的卡普雷卡尔常数(Kaprekar's constant),也叫四位数黑洞数,由印度数学家 D. R. Kaprekar 于 1949 年发现。下面我们一起探究一下它最核心、最有趣的特性吧。
一、最核心:数字黑洞(卡普雷卡尔变换)
规则(对任意四位、数字不全相同的数):
- 把四个数字从大到小排,得最大数;
- 从小到大排,得最小数(允许前导零,看作四位数);
- 大数 − 小数 = 新数;
- 重复操作。
神奇结论:最多 7 步,必然得到 6174;之后永远卡在 6174。
例子(随便选一个,比如 5298):
- 9852 − 2589 = 7263
- 7632 − 2367 = 5265
- 6552 − 2556 = 3996
- 9963 − 3699 = 6264
- 6642 − 2466 = 4176
- 7641 − 1467 = 6174
再算一次:
限制:必须是四位数、且不能四个数字全同(如 1111、2222 直接排除)。
二、它自己的数学 “身份”
- 质因数分解:
6174 = 2 × 3² × 7³
- 各位和:6+1+7+4 = 18
巧的是:6174 = 18³ + 18² + 18¹ = 5832 + 324 + 18。
- 是过剩数、半完全数、哈沙德数、奢侈数、7 - 光滑数。
三、程序验证
看到这里有怀疑精神的朋友,或许会认为这只是个巧合。那么,我们不如来一段程序代码:随机生成100个4位数,验证一下6174的规律是否成立,如何?
import random
def kaprekar_calc(n):
"""对一个4位数做一次卡普雷卡尔运算,返回结果"""
s = f"{n:04d}"
desc = int(''.join(sorted(s, reverse=True)))
asc = int(''.join(sorted(s)))
return desc - asc
def is_fall_6174(num, max_step=10):
"""判断一个4位数是否能收敛到6174,最多迭代max_step步"""
# 四位数字完全相同,直接判定无效
s = f"{num:04d}"
if len(set(s)) == 1:
return False
current = num
for _ in range(max_step):
current = kaprekar_calc(current)
if current == 6174:
return True
return False
# 随机生成100个四位数
total = 100
success = 0
fail = 0
print("===== 随机100个四位数 验证6174卡普雷卡尔规律 =====")
for i in range(total):
# 生成 1000~9999 随机四位数
rnd_num = random.randint(1000, 9999)
if is_fall_6174(rnd_num):
success += 1
# 可选:打印每个成功的数
# print(f"{i+1:3d}: {rnd_num} 收敛到6174")
else:
fail += 1
print(f"{i+1:3d}: {rnd_num} 数字全相同,不满足规则")
print("\n===== 统计结果 =====")
print(f"随机总数: {total} 个")
print(f"符合规律、收敛到6174: {success} 个")
print(f"四位数字全相同、无意义: {fail} 个")
代码说明
这是 Python 代码,只要你有python运行环境就能跑。如果没有也没关系,打开 https://py.ako.cc/ ,然后把代码copy过去直接运行。
- 随机生成 1000 ~ 9999 正规四位数;
- 自动过滤 四个数字全相同(如 1111、2222)这类无效数;
- 对每个有效数迭代运算,判断是否能落入 6174;
- 最后输出统计总数、成功数、无效数。
总结
6174确实一组神奇的数字!这种神秘的美感,在数学的世界里无处不在,也许上帝创造世界的奥义,就藏在数学里。