电话号码谜题:任何整数都能乘出只含0和1的数?

任意电话号码均可找到乘数使乘积只含0和1,鸽巢原理揭示其背后的数论原理。
这篇文章围绕一个反直觉的数学事实展开:任意正整数(比如手机号码)都存在一个正整数乘数,使两者之积只由数字0和1组成;若该数末位为1、3、7或9,乘积还可以做到全部位数均为1(即"循环单位数"repunit)。文章指出,暴力枚举此类乘数在实际中几乎不可行,但理解背后的数论原理——核心是鸽巢原理与余数循环——就能将搜索空间大幅压缩,化不可行为可行。末位与10互质是得到"全1乘积"的关键条件,因为循环单位数本身不含2、5因子,只有同样不含这两个因子的数才能整除它。这道谜题浓缩了数学思维的魅力:洞察结构远比蛮力计算更有价值。
一个反直觉的数学事实
拿出你的手机号码,把它当成一个大整数看待。数学上有一个令人意外的结论:总能找到另一个大于零的整数,使得两者相乘的结果只由 1 和 0 两种数字构成。
更进一步,如果你的手机号码末位恰好是 1、3、7 或 9,那么可以找到一个乘积,让结果中的每一位数字都是 1——也就是形如 111...1 这样的「循环单位数」(repunit)。
这个说法初看之下几乎不可思议。任意一串随机数字,居然都能被「补全」成一个整齐划一的 0-1 组合数,这背后隐藏着数论中一个相当优雅的原理。

谜题的挑战在哪里
这道题目来自一个每月更新的数学谜题系列,本月的任务是证明为什么这件事总是成立。
它真正有趣的地方在于计算的对比。如果你想针对自己的具体手机号,用暴力枚举的方式去寻找合适的乘数——一个一个地试——那么所需的计算量几乎肯定会超出你手头能调动的算力。数字规模一旦上来,纯粹的穷举便迅速失控。
但如果你真正理解了背后的证明,情况就完全不同了。理解原理之后,你可以让你的「暴力搜索」变得聪明得多,把搜索空间大幅压缩,从而在可接受的时间内真正找到答案。这正是数学洞察的价值所在:它不是取代计算,而是让计算变得高效。
背后的数论直觉
虽然原视频将完整证明留作读者练习,但可以点出关键的思路方向。
鸽巢原理的威力
证明这类命题的经典工具是鸽巢原理(抽屉原理)。考虑一系列由 1 构成的数:1、11、111、1111……当我们对某个固定的除数取余数时,可能出现的余数只有有限种。当循环单位数的个数超过可能的余数个数时,必然有两个数落在同一个余数上。它们的差就会是一个能被目标数整除、且只由 1 和 0 构成的数。
鸽巢原理(Pigeonhole Principle)是组合数学中最基本也最强大的工具之一,其表述极为简洁:若将 n+1 个物体放入 n 个容器,则至少有一个容器装了不止一个物体。看似显而易见,但它的推论却能证明许多非平凡的存在性结论。在本问题中,具体的应用方式是:对于一个 k 位手机号码 N,考虑序列 R₁=1, R₂=11, R₃=111, … 这些循环单位数对 N 取模后的余数。余数只能落在 0 到 N-1 共 N 个可能值中。当我们考察前 N+1 个循环单位数时,必然有两个——设为 Rᵢ 和 Rⱼ(i > j)——有相同的余数,因此 Rᵢ - Rⱼ 能被 N 整除。而 Rᵢ - Rⱼ 恰好形如 111...1000...0(若干个 1 后跟若干个 0),正是那类只含 0 和 1 的数。若余数序列中某项直接为 0,则对应的循环单位数本身就被 N 整除,结论更直接。
末位决定形态
为什么末位是 1、3、7、9 时能得到「全是 1」的结果?因为这四个数字与 10 互质,意味着它们不含 2 或 5 这两个因子。而由纯 1 组成的循环单位数本身不含 2、5 因子,因此这类数字才可能整除出一个全 1 的乘积。相比之下,若末位是偶数或 5,结果中就不得不出现 0。
「与 10 互质」在数论中意味着 gcd(N, 10) = 1,即 N 不含质因子 2 和 5。这一条件之所以关键,在于循环单位数 Rₙ = (10ⁿ - 1)/9 的因子结构:Rₙ 本身不含 2 或 5,因为 10ⁿ - 1 末位始终为 9,是奇数且不被 5 整除。若 N 含有因子 2 或 5,则 N 永远无法整除任何循环单位数 Rₙ,从而「全 1 乘积」不存在——此时最好的结果只能是含 0 的混合型。更严格地说,当 gcd(N, 10) = 1 时,由欧拉定理可知 10^φ(N) ≡ 1 (mod N),这保证了存在某个 n 使得 10ⁿ ≡ 1 (mod N),进而 9·Rₙ = 10ⁿ - 1 ≡ 0 (mod N)。由于 gcd(9, N) 的情况可进一步分析,最终可以确保某个 Rₙ 确实是 N 的倍数。这个 n 的最小值被称为 N 关于模 10 的「乘法阶」,也直接决定了最终答案的位数。
从证明到高效搜索
理解了余数循环的结构后,搜索合适乘数就不再是盲目试错。你只需要关注余数序列何时首次归零或出现重复,这个周期往往远小于数字本身的量级,从而把不可行的暴力计算,变成一次有的放矢的定向查找。
为什么这类谜题值得思考
这个电话号码谜题浓缩了数学思维的核心魅力:一个看似关于「随机数字」的问题,实则由整除性、余数与鸽巢原理共同支配。它提醒我们,很多表面上需要海量计算的问题,一旦找准结构,就能被巧妙化解。
对于喜欢动手的人来说,不妨拿自己的手机号试一试——先感受暴力枚举的困难,再体会理解原理后豁然开朗的畅快。这种「知其所以然」带来的效率飞跃,正是数学教育与计算思维想要传递的东西。
相关推荐

零成本搭建AI超级员工系统:智能体自动工作流全解析
深度拆解B站演示的AI超级员工系统:Agent智能体编排、数字人口播、地图与企业获客、24小时智能客服及法务模块全覆盖。分析零成本开户背后的商业逻辑与合规风险,帮助创业者判断这套AI数字员工系统的真实投产比。

Chatbot与AI Agent的本质区别:从对话到执行的跨越
Chatbot和AI Agent有什么区别?本文基于Learn Tech频道的MCP系列讲解,用订机票、笔记摘要等实例说明:Chatbot只给答案,Agent通过思考-行动-观察循环真正完成任务,并拆解模型、工具、记忆、目标四大部件及MCP的桥梁作用,同时讨论Agent的适用边界与权限风险。

免费GitHub仓库:342小时AI课程,从数学到MCP服务器
一个免费GitHub仓库提供342小时AI课程,包含523节课、20个阶段,覆盖数学基础到Agent构建和MCP服务器。支持目标驱动学习,每节课产出可留存的prompt、skill或agent,已有近10万人开始学习。