天天看点

数学小魔术——猜数字

数学小魔术——神奇的二进制

请你任意猜想一个三位数,把这个三位数乘以 91 的乘积的最后三位告诉我,我们很快猜出你心中所想的那个三位数是多少?

我们以对方心中所想的 789 为例,则对方计算出 789×91=71799 ,并把结果的三位,也即 799 告诉我。看起来,这么做似乎损失了不少信息,让我没法反推出原来的数。不过,我仍然有办法:只需要把对方告诉我的结果再乘以 11,也即 799×11=8789 ,乘积的末三位即是对方刚开始所想的秘密数字。

道理其实很简单, 91×11=1001=(1000+1) ,任何三位数乘以1001,都会将该数

复制

一遍,比如, 123×1001=123×(1000+1)=123000+123=123123 ,末尾三位保持不变。

当然该问题也可描述为:

请你任意猜想一个三位数,把这个三位数乘以 11 的乘积的最后三位告诉我,我们很快猜出你心中所想的那个三位数是多少?

假设该数为 x ,上述问题即可用数学语言描述为,(x⋅91%1000)⋅11=[(x⋅91⋅11)%1000=x],这有一个基本结论,相乘之前对乘数取余不会对结果造成影响。

我们举一反三,我们换种方式描述该问题:我需猜测你心中所想的数字,比如银行卡密码,比如某人的生日,你用我们约定的一个数 a (比如91),去乘那个数,传给我其末尾的几位,这叫什么操作?即为对该数字进行的加密。我用我约定的另外一个数(比如11)去乘以传递过来的数,即为解码的动作。

比如对银行卡密码(一般为6位,比如密码为327685)进行加密,传输以及最后的解码。你我处在计算机网络中的不同节点,你要告诉我你银行卡的密码,显然你不能直接传递明码,考虑到,5000001=141×35461,我们使用 141×327685%106=203585 ,作为加密后数字,我们使用 35461×203585%106=327685 。