news 2026/10/30 4:58:19

第二十夜 · 当数字遇见自己

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第二十夜 · 当数字遇见自己

第二十夜 当数字遇见自己

上一夜的末尾,我留了一道题。从 12496 出发,反复数出真因数、求和、走到那个和,问走到第几步回到出发点。你若是走了,此刻已经知道,第五步,它回到原地。五个数手拉手围成一个圈,谁也不掉队。这样的圆满要靠伙伴,五个数一个都不能少。这一夜要见的这一族不结伴。它们站在水边,不找别人,只把自己数回自己。数字王国的水巷就在这一夜开门。

进水巷之前,先说巷名的来历。数字王国的人说,很久以前有个少年,长得极好,全城的人都喜欢他,他谁也不理会,唯独在一泓清泉边停住了。水里有一张脸看着他,他伸手去够,水面一碎,那张脸也碎了。他守在水边不肯走,渐渐枯了,最后化作一株花,后人叫它水仙。讲这故事的人还说,爱着少年的那位仙女因为不会说自己的话,只会重复别人的尾音,被罚成了山谷里的回声。传说是传说,神话是神话,可这一族数的名字真的从少年身上来,天下人叫它自幂数,也叫水仙花数,英文里的 narcissistic,字面就是自恋,词源正是那个守着泉水不放的少年。它还有一个户口上的别名,阿姆斯特朗数。这位阿姆斯特朗不是踏上月球的那位。1966 年,美国肯塔基大学的一堂计算课上,这道题出现在考卷里,三个学生各自解了出来,老师便拿最先交卷那位学生的姓称呼这一族数。那位迈克尔·阿姆斯特朗后来成了一个教计算机的老师,2020 年过世。登月的那位比课堂晚了三年才踩上月球。一样的姓,一个去了天上,一个留在课堂,这一夜讲的是课堂里这位。

水仙花数是三位数的名分。一个三位数,把它每一位数字的立方加起来,加回来的竟然是它自己。三位数里这样的数恰好四个。

$$153=1^3+5^3+3^3$$

$$370=3^3+7^3+0^3$$

$$371=3^3+7^3+1^3$$

$$407=4^3+0^3+7^3$$

这算不上稀奇的本事,稀奇的是这个花谱接着往下开。四位数照四次方,三位数里开四朵,四位数里只开三朵,天下人叫它们四叶玫瑰。

$$1634=1^4+6^4+3^4+4^4$$

$$8208=2^4+8^4+0^4+8^4$$

$$9474=9^4+4^4+7^4+4^4$$

五位数照五次方,又是三朵,叫五角星。六位数照六次方,只剩独苗一朵,叫六合。

$$54748=5^5+4^5+7^5+4^5+8^5$$

$$548834=5^6+4^6+8^6+8^6+3^6+4^6$$

七位开四朵,天下人叫北斗七星,其中一朵是

$$1741725=1^7+7^7+4^7+1^7+7^7+2^7+5^7$$

两位数一片荒漠,一朵也不开。花谱越往后越稀,开到三十九位,彻底开完。全部自幂数拢共 88 朵,最大的一朵有 39 位。

$$115132219018763992565095597973971522401$$

把这 39 位数字各自的 39 次方加起来,加回来的还是它自己。再往后不会再有了,40 位开外,各位数字的幂和追不上数自己长大的速度,这样的相遇从一开始就不可能。1985 年有人把这句话做成了证明,88 朵,到此为止,一朵不多。

花谱里最值得停下来的是第一朵。153 除照镜子,还有两层身份。第一层,它是三角形数,把 1 加到 17,不多不少正好是它。

$$1+2+3+\cdots+17=153$$

第二层在经书里。《约翰福音》记耶稣受难之后在湖边向门徒显现,门徒打了一夜的鱼一无所获,照他说的再撒一次网,拉上来 153 条大鱼。经文只记了数,没说为什么是 153,两千年来解经的人各有各的读法。四世纪的奥古斯丁读出了上面那道加法,10 加 7,他说 10 是十诫,7 是圣灵的七样恩赐。同世纪的耶罗姆另有读法,他说希腊的博物学家数过,天下的鱼种恰好 153 种,满网的 153 条就是万国万族。谁也说不服谁,这个数照旧安静地躺在那页经文里。倒是数学家在两千后替它添了一笔谁也驳不倒的注,凡是 3 的倍数,把它各位数字的立方加起来得到新数,再对新数照做,反复下去,最后必到 153。

$$27\to351\to153$$

$$33\to54\to189\to1242\to81\to513\to153$$

999 要走六步,999999 反而只要四步,一百万以内的 3 的倍数我全数了一遍,个个都回到原点,走得最远的也只用了 14 步。道理有两层,立方和与原数除以 3 的余数永远相同,所以 3 的倍数走不丢;立方和总比大数小,所以路总在变短。两头一夹,终点只有一个。153 不但照得见自己,还把一整个家族往自己身上引。

花谱讲完,该见这户人家的近亲。水仙花照的是幂,近亲照的是积,天下人叫它 Lily,百合。把数字从中间掰开,所有掰法的两部分各自相乘,乘积加起来等于自身的,就是这一族。

$$655=6\times55+65\times5$$

$$1461=1\times461+14\times61+146\times1$$

这是一道面试考题的原题,题目只说了一句,求出五位数中的所有 Lily Number。答案我在这一夜末尾的程序里跑出来了,五位数里恰好五朵。跑出来你又会不会多看一眼,这五朵是 14610,16420,23610,34420,65500,全是四位那五朵的十倍。掰开乘一乘,它们的家族也照得出代际。

顺着水巷往里走,第二户开着一家镜子铺。铺里挂的数正着读反着读都一样,121,1331,353。天下人叫它们回文数。山谷里那位只会重复别人的仙女在这里等到的是对手,回文数不需要别人的话,它自己就是自己的回声。镜子铺里真正的玩法不在这里,你随便挑一个数,把它倒过来写,两数相加,再把和倒过来写,再加。多数数走不了几步,就会撞出一个回文数。89 是这条路上走得最远的两位数,它走了整整二十四步。

$$89+98=187$$

$$187+781=968$$

$$968+869=1837$$

$$1837+7381=9218$$

$$9218+8129=17347$$

$$17347+74371=91718$$

$$91718+81719=173437$$

$$173437+734371=907808$$

$$907808+808709=1716517$$

$$1716517+7156171=8872688$$

$$8872688+8862788=17735476$$

$$17735476+67453771=85189247$$

$$85189247+74298158=159487405$$

$$159487405+504784951=664272356$$

$$664272356+653272466=1317544822$$

$$1317544822+2284457131=3602001953$$

$$3602001953+3591002063=7193004016$$

$$7193004016+6104003917=13297007933$$

$$13297007933+33970079231=47267087164$$

$$47267087164+46178076274=93445163438$$

$$93445163438+83436154439=176881317877$$

$$176881317877+778713188671=955594506548$$

$$955594506548+845605495559=1801200002107$$

$$1801200002107+7012000021081=8813200023188$$

二十四步,13 位,8813200023188,正着读反着读都是它。89 从两位走成十三位,一路上每一步都在长大,最后一行里那个数回头看一眼出发时的自己,已经完全不认得了。巷子里还有一位更倔的。196 加 691 得 887,再倒再加,人们推着它往前走了几十亿次,它长到了上亿位,始终没有照出回文。它是谁,为什么回不到原点,这一夜不掀,让它留给未解之谜的那一夜。

镜子铺另有一桩白送的便宜事。凡是偶数位的回文数,都躲不开 11。

$$1221=11\times111$$

$$123321=11\times11211$$

道理藏在 11 的整除判别法里,奇位数字的和与偶位数字的和相减,差是 0 就是 11 的倍数。回文数两头对称,偶数位时每一对对称的数字恰好一个站奇位一个站偶位,加减相消,一分不剩。奇数位的回文数没这个待遇,353 除以 11 余 1。

数字王国的回文到这里,文字王国还有一座更高的山。一千六百多年前,前秦有一位叫苏蕙的女子,字若兰,丈夫窦滔被流放,她把要说的话织进一方八寸的锦缎,840 个字排成纵横各 29 字的方阵,纵横反斜、退一字迭一字读,都能读成诗,后人数出几千首,武则天为它写过序。这方锦叫璇玑图,是文字王国的回文之巅。数字的回文正读反读只有一条路,璇玑图的回文能走出几千条。两座山放在一起看,数字还是小学生。顺手留一句给你,上海自来水来自海上,这句上联至今没有公认的下联,数字王国的回文你这一夜已经会造了,文字王国的这一句,评论区见。

水巷尽头住着第三户。这一户不照幂也不照镜,它们守的在自己的尾巴上。一个数平方之后,末几位竟然还是它自己,天下人叫它自守数,也有人叫它同构数。

$$5^2=25$$

$$6^2=36$$

$$25^2=625$$

$$76^2=5776$$

$$376^2=141376$$

$$625^2=390625$$

$$9376^2=87909376$$

$$90625^2=8212890625$$

盯着这列等式看,尾巴一节一节对上了。这样的数不止离散的几颗,它们排成两条无穷的链,一条尾巴始终是 5,一条尾巴始终是 6。

$$5\to25\to625\to0625\to90625\to890625\to2890625$$

$$6\to76\to376\rightarrow9376\to09376\to109376\to7109376$$

每条链每往前走一位,新接上的数字只有一个可能,两条链我都接到了 20 位,没有一步分过岔。第二条链的第五位甚至是一个 0,09376,谁头一回看见都以为写错了,可 $9376^2=87909376$ 的尾巴里它就站在那里。为什么恰好两条,为什么从不分岔,这一问的答案你要是熟,此刻应该已经笑了。第十一夜韩信点兵,三个余数定一个数,靠的是模数两两互质。自守数的定义翻成同余的话就是 $x^2\equiv x\pmod{10^k}$,10 拆成 2 和 5,各管各的。末位是6的数的原理是,对2的幂取模等于0,对5的幂取模等于1。

$$9376\equiv 0\pmod{16},\qquad 9376\equiv 1\pmod{625}$$

末位是5的数正相反,对16取模等于1,对625取模等于0。两条链一边一条,各占一个位置,永不换房,所以每一步接哪位数字,余数早就定死了,想分岔也没有第二个名额。数过大半生,第十一夜那套口诀在这里又显了一回灵。

水巷的故事讲完了。巷子里玩的这套拆数位的手艺,出了巷子有一份正经差事。1954 年,IBM 有一位工程师叫卢恩,他给拆数位、隔位加倍、求和、看个位的这一套动作注册了专利,用来查号码抄写时手误,这套手续今天叫 Luhn 算法。你每次刷卡,机器在你号码上跑一遍,几毫秒,不通过就拒付。商品条码、身份证件的末位校验,跑的都是同一族手艺,用的都是同一个模。卢恩后来还捣鼓出另一件更了不得的物件,散列表,那是工业算法的地界,日后有自己的夜。水巷是数字王国的游乐场,游乐场里磨的刀,出厂后被装进了你钱包里的每一张卡。

那少年守着泉水枯去,化成一株花。数没有这个烦恼,它们照了一万年,一位都没老。当数字遇见自己,水仙照水,照见一朵花,回文照镜,照见两个自己,自守数一算平方,尾巴里坐着的还是自己。圆满有时住在彼此身上,像 220 与 284,有时它就住在自己身上,住得安安稳稳,一步都不用挪。

这一夜的三户人家,都写进了下面这个能跑的程序。

importjava.math.BigInteger;/** * 第二十夜 当数字遇见自己,水巷三户全部当众照一遍镜子。 * 花照水(水仙花系与 Lily)、镜照人(回文)、影随身(自守), * 外加拆位机器出厂前的一次试车(Luhn)。 */publicclassNight20Mirrors{// ===== 一、花照水:水仙花与花系全家桶,3 到 8 位全暴力扫描 =====// 幂和:每一位数字的位数次方之和,幂查表,不调库staticlongdigitPowerSum(longn,intlen,long[][] powTable){longs=0;for(inti=0; i < len; i++) {intd=(int) (n %10); s += powTable[d][len]; n /=10; }returns; }staticvoidscanNarcissistic(){ System.out.println("== 一、水仙花与花系全家桶(3 到 8 位,幂 = 位数)==");long[][]powTable=newlong[10][9];for(intd=0; d <=9; d++) { powTable[d][0] =1;for(intp=1; p <=8; p++) powTable[d][p] = powTable[d][p -1] * d; }for(intlen=3; len <=8; len++) {StringBuildersb=newStringBuilder();intcount=0;for(longn=(long) Math.pow(10, len -1); n < (long) Math.pow(10, len); n++) {if(digitPowerSum(n, len, powTable) == n) { sb.append(n).append(' '); count++; } } System.out.println(len +" digits ("+ count +"): "+ sb.toString().trim()); }// 花谱最末一位:39 位的自照冠军,把它各位的 39 次方加一遍,看它认不认自己Stringbiggest="115132219018763992565095597973971522401";BigIntegersum=BigInteger.ZERO;for(inti=0; i < biggest.length(); i++) {intd=biggest.charAt(i) -'0'; sum = sum.add(BigInteger.valueOf(d).pow(39)); } System.out.println("39-digit champion mirrors itself: "+ sum.toString().equals(biggest)); }// ===== 二、花照水:Lily,把数字掰开乘积求和(3 到 5 位全扫)=====staticvoidscanLily(){ System.out.println("== 二、Lily 全集(3 到 5 位)==");for(intlen=3; len <=5; len++) {StringBuildersb=newStringBuilder();intcount=0;intlo=(int) Math.pow(10, len -1), hi = (int) Math.pow(10, len);for(intn=lo; n < hi; n++) {Strings=String.valueOf(n);longsum=0;for(intcut=1; cut < s.length(); cut++) {longfront=Long.parseLong(s.substring(0, cut));longback=Long.parseLong(s.substring(cut)); sum += front * back; }if(sum == n) { sb.append(n).append(' '); count++; } } System.out.println(len +" digits ("+ count +"): "+ sb.toString().trim()); } }// ===== 三、153 吸引子:3 的倍数反复立方和,全部回到原点 =====staticlongcubeSum(longn){longs=0;while(n >0) {longd=n %10; s += d * d * d; n /=10; }returns; }staticvoidtrap153(){ System.out.println("== 三、153 吸引子(3 的倍数,扫到一百万)==");longmaxSteps=0, argMax =0;for(longn=3; n <=1_000_000; n +=3) {longx=n;intsteps=0;while(x !=153) { x = cubeSum(x); steps++;if(steps >200) { System.out.println("COUNTEREXAMPLE: "+ n);return; } }if(steps > maxSteps) { maxSteps = steps; argMax = n; } } System.out.println("all multiples of 3 up to 1000000 fall into 153; max steps "+ maxSteps +" at "+ argMax);for(longseed :newlong[]{27,33}) {StringBuildersb=newStringBuilder();longx=seed; sb.append(x);while(x !=153) { x = cubeSum(x); sb.append(" -> ").append(x); } System.out.println(sb); }// 153 的双重身份:三角形数,1 加到 17System.out.println("triangular check: 17*18/2 = "+ (17*18/2)); }// ===== 四、镜照人:89 的二十四步,回到原点 =====staticlongreverse(longn){longr=0;while(n >0) { r = r *10+ n %10; n /=10; }returnr; }staticbooleanisPal(longn){returnreverse(n) == n; }staticvoidladder89(){ System.out.println("== 四、89 的二十四步 ==");longx=89;intstep=0;while(!isPal(x)) {longr=reverse(x); System.out.println("step "+ String.format("%2d", ++step) +": "+ x +" + "+ r +" = "+ (x + r)); x += r; } System.out.println("palindrome reached: "+ x +" steps="+ step +" x%11="+ (x %11)); }// ===== 五、镜照人:196 露脸,不掀布 =====staticBigIntegerbigReverse(BigInteger x){returnnewBigInteger(newStringBuilder(x.toString()).reverse().toString()); }staticbooleanbigIsPal(BigInteger x){Strings=x.toString();returns.equals(newStringBuilder(s).reverse().toString()); }staticvoidblack196(){ System.out.println("== 五、196 ==");BigIntegerx=BigInteger.valueOf(196);for(inti=1; i <=5; i++) {BigIntegerr=bigReverse(x); System.out.println("step "+ i +": "+ x +" + "+ r +" = "+ x.add(r)); x = x.add(r); }intsteps=5;while(steps <10000&& !bigIsPal(x)) { x = x.add(bigReverse(x)); steps++; } System.out.println("after 10000 steps: palindrome? "+ bigIsPal(x) +" digits now "+ x.toString().length()); }// ===== 六、影随身:自守两条链,每步唯一延伸 =====staticvoidautomorphic(){ System.out.println("== 六、自守两条链(长到 20 位,每步唯一延伸)==");BigIntegerten=BigInteger.TEN;for(longseed :newlong[]{5,6}) {StringBuildersb=newStringBuilder();BigIntegerx=BigInteger.valueOf(seed); sb.append(x);intdigits=1;while(digits <20) { digits++;BigIntegermod=ten.pow(digits);BigIntegerfound=null;intfoundCount=0;for(intt=0; t <=9; t++) {BigIntegercand=x.add(ten.pow(digits -1).multiply(BigInteger.valueOf(t)));if(cand.multiply(cand).mod(mod).equals(cand)) { found = cand; foundCount++; } }if(foundCount !=1) { System.out.println("UNIQUE EXTENSION BROKEN at "+ digits +" digits: "+ foundCount +" candidates");return; } x = found; sb.append(" -> ").append(String.format("%0"+ digits +"d", x)); } System.out.println(sb); }// 落到纸面的平方System.out.println("376^2 = "+ BigInteger.valueOf(376).pow(2)); System.out.println("625^2 = "+ BigInteger.valueOf(625).pow(2)); System.out.println("9376^2 = "+ BigInteger.valueOf(9376).pow(2)); System.out.println("90625^2 = "+ BigInteger.valueOf(90625).pow(2));// 同余身份:尾 6 链模 2 的幂交 0、模 5 的幂交 1,尾 5 链对调System.out.println("9376 % 16 = "+ (9376%16) +" ; 9376 % 625 = "+ (9376%625)); System.out.println("625 % 16 = "+ (625%16) +" ; 625 % 625 = "+ (625%625)); System.out.println("109376 % 32 = "+ (109376%32) +" ; 109376 % 3125 = "+ (109376%3125)); }// ===== 七、白送的定理:偶位回文必被 11 整除 =====staticvoideleven(){ System.out.println("== 七、偶位回文 % 11 ==");for(longp :newlong[]{1221,123321,1234554321L}) { System.out.println(p +" % 11 = "+ (p %11)); } System.out.println("odd-length counter: 353 % 11 = "+ (353%11)); }// ===== 八、拆位机器出厂试车:Luhn =====staticbooleanluhnCheck(String num){intsum=0;for(inti=0; i < num.length(); i++) {intd=num.charAt(num.length() -1- i) -'0';if(i %2==1) { d *=2;if(d >9) d -=9; } sum += d; }returnsum %10==0; }staticvoidluhn(){ System.out.println("== 八、Luhn =="); System.out.println("4111111111111111 -> "+ luhnCheck("4111111111111111")); System.out.println("4111111111111112 -> "+ luhnCheck("4111111111111112")); }publicstaticvoidmain(String[] args){ scanNarcissistic(); scanLily(); trap153(); ladder89(); black196(); automorphic(); eleven(); luhn(); } }

实跑输出如下。

== 一、水仙花与花系全家桶(3 到 8 位,幂 = 位数)== 3 digits (4): 153 370 371 407 4 digits (3): 1634 8208 9474 5 digits (3): 54748 92727 93084 6 digits (1): 548834 7 digits (4): 1741725 4210818 9800817 9926315 8 digits (3): 24678050 24678051 88593477 39-digit champion mirrors itself: true == 二、Lily 全集(3 到 5 位)== 3 digits (1): 655 4 digits (5): 1461 1642 2361 3442 6550 5 digits (5): 14610 16420 23610 34420 65500 == 三、153 吸引子(3 的倍数,扫到一百万)== all multiples of 3 up to 1000000 fall into 153; max steps 14 at 12558 27 -> 351 -> 153 33 -> 54 -> 189 -> 1242 -> 81 -> 513 -> 153 triangular check: 17*18/2 = 153 == 四、89 的二十四步 == step 1: 89 + 98 = 187 (中间二十二步与正文阶梯逐行一致,此处从略) step 24: 1801200002107 + 7012000021081 = 8813200023188 palindrome reached: 8813200023188 steps=24 x%11=0 == 五、196 == step 1: 196 + 691 = 887 step 2: 887 + 788 = 1675 step 3: 1675 + 5761 = 7436 step 4: 7436 + 6347 = 13783 step 5: 13783 + 38731 = 52514 after 10000 steps: palindrome? false digits now 4159 == 六、自守两条链(长到 20 位,每步唯一延伸)== 5 -> 25 -> 625 -> 0625 -> 90625 -> 890625 -> 2890625 -> 12890625 -> 212890625 -> 8212890625 -> 18212890625 -> 918212890625 -> 9918212890625 -> 59918212890625 -> 259918212890625 -> 6259918212890625 -> 56259918212890625 -> 256259918212890625 -> 2256259918212890625 -> 92256259918212890625 6 -> 76 -> 376 -> 9376 -> 09376 -> 109376 -> 7109376 -> 87109376 -> 787109376 -> 1787109376 -> 81787109376 -> 081787109376 -> 0081787109376 -> 40081787109376 -> 740081787109376 -> 3740081787109376 -> 43740081787109376 -> 743740081787109376 -> 7743740081787109376 -> 07743740081787109376 376^2 = 141376 625^2 = 390625 9376^2 = 87909376 90625^2 = 8212890625 9376 % 16 = 0 ; 9376 % 625 = 1 625 % 16 = 1 ; 625 % 625 = 0 109376 % 32 = 0 ; 109376 % 3125 = 1 == 七、偶位回文 % 11 == 1221 % 11 = 0 123321 % 11 = 0 1234554321 % 11 = 0 odd-length counter: 353 % 11 = 1 == 八、Luhn == 4111111111111111 -> true 4111111111111112 -> false

① 真伪核对逐条照实登记。

Ⅰ 那喀索斯与回声 少年临泉自照、憔悴化水仙,仙女回声只会重复他人尾音,出自奥维德《变形记》卷三(神话,登记);narcissistic(自恋)一词确由少年之名而来(真,词源);本夜水巷场景为演绎层虚构。

Ⅱ 阿姆斯特朗数人名 Michael F. Armstrong(1941 至 2020),美国数学教育者;名字通行的来历是 1966 年肯塔基大学一堂计算课的考试,三名学生独立解出,讲师以最先解出者之姓命名(通行说法层,MathWorld 口径,登记);与登月宇航员尼尔·阿姆斯特朗同姓,非其人(真)。

Ⅲ 自幂数总量 十进制下自幂数恰有 88 个,最大者 39 位,1985 年 D. Winter 证明总量有限;60 位开外幂和必追不上数本身(真,已联网核查;3 至 8 位本机全扫描核对,39 位冠军本机验幂和自照成立)。

Ⅳ 花谱别名 独身数(一位)、水仙花数(三位)、四叶玫瑰数(四位)、五角星数(五位)、六合数(六位)、北斗七星数(七位)、八仙数(八位),中文趣味数学读物通行口径(已联网核查,通行命名层登记);严格说水仙花数仅指三位自幂数。

Ⅴ 153 条鱼 《约翰福音》第二十一章第十一节记 153 条大鱼(真,经文);奥古斯丁以三角形数解之(10 加 7 各有所指),耶罗姆以鱼类共 153 种解之(解经传说层,登记);153 为第 17 个三角形数(真,实算)。

Ⅵ 153 吸引子 凡 3 的倍数,反复做各位立方和,必落于 153(真定理);论证两层,立方和与原数模 3 同余、立方和小于大数(真);一百万以内全部 3 的倍数本机验证,最远 12558 走 14 步(真,JDK 21 实跑)。

Ⅶ Lily Number 面试机试原题照录,致谢原出题方(题面原样);三位 1 朵、四位 5 朵、五位 5 朵为本机全扫描所得(真,实跑);五位五朵皆为四位五朵之十倍系本机观察(真,实跑所见,未展开证明)。

Ⅷ 89 与 196 89 经 24 步倒序相加得回文 8813200023188(真,实跑);196 倒序相加一万步未得回文、数值已 4159 位(真,实跑);更大规模的验证已有社区纪录推至十亿步开外,Lychrel 一词为 Wade VanLandingham 约于 2002 年以其女友之名 Cheryl 变形而来,196 是最小候选,二进制下已证明不存在此类数(真,已联网核查);196 能否永不变回回文,未解,留给第二十二夜。

Ⅸ 璇玑图 苏蕙,字若兰,前秦人,织锦回文寄夫窦滔,840 字纵横各 29 字,武则天作序记其事,后世读法逾数千首(真,已联网核查;具体可读诗数各家统计不一,登记);中心增一心字成 841 字为后世纪载一说(存疑并记)。

Ⅹ 自守数 $n^2$ 的末几位恰为 $n$(真);两条无穷链每步延伸唯一,本机接到 20 位无分岔(真,实跑);四位成员 0625 与 09376 的前导零为写法口径,数值上即 625 与 9376(真);与 $x^2\equiv x\pmod{10^k}$ 的幂等元及中国剩余定理的关系(真);中文口语别名同构数(登记);历史首倡者不可考,照民间流传口径登记。

Ⅺ Luhn 算法 Hans Peter Luhn,IBM 工程师,1954 年发明此校验法,专利 1960 年授权(真,已联网核查);今广泛用于信用卡号校验(真);Luhn 亦为早期哈希与信息检索的奠基者之一(真,已联网核查)。

Ⅻ 演示件 Night20Mirrors 八路实跑(花谱 3 至 8 位扫描、39 位冠军验幂和、Lily 三至五位全集、153 吸引子百万内全验、89 二十四步、196 一万步、自守两条链 20 位、偶位回文模 11、Luhn 一正一反),输出与文中一致(真,JDK 21 实跑验证)。

② 术语对照卡本夜新增五条,定义不含比喻。

Ⅰ 自幂数(水仙花数) n 位数等于其各位数字的 n 次幂之和,如 153。十进制共 88 个。别名阿姆斯特朗数;三位者习称水仙花数。

Ⅱ 回文数 正读反读相同的自然数,如 121。偶数位的回文数必为 11 的倍数。

Ⅲ 利克瑞尔数 疑为经反复倒序相加永不能得到回文数的自然数,196 为最小候选,尚未证明。第二十二夜正主。

Ⅳ 自守数(同构数) 平方的末几位恰为自身的自然数,如 9376。等价于同余方程 $x^2\equiv x\pmod{10^k}$ 的非平凡解,成两条无穷链。

Ⅴ Luhn 算法 从右起隔位加倍、求和后核个位的校验算法,用于识别号码的抄写差错。

③ 今夜习题三道加一句征对,评论区见。

Ⅰ 999 走了六步回到原点,999999 只走了四步。挑一个你自己的 3 的倍数,把它立方和走过的每一步写下来,看它是不是也到 153。

Ⅱ 6 链走到 9376,再往前接一位时,程序把 0 到 9 各试了一遍。写这个程序,看有几个数字接得上,接上的那个是几。

Ⅲ 308056789012345 是一张虚构卡号的前 15 位。写程序算出第 16 位校验位,再把末位改掉一位拿去验证,看机器放不放行。

Ⅳ 上海自来水来自海上。这句上联至今没有公认的下联,敢试的,评论区见。


本书目录导航上一篇:第十九夜 · 数字王国的另一个我 下一篇:第二十一夜 · 数字黑洞与西西弗斯的惩罚 起点:卷首语·算法童话


版权声明:本文为作者原创,受著作权法保护。未经授权禁止转载、搬运、摘编、改编及任何形式的二次创作;个人学习引用请注明作者与原文出处。转载授权请联系作者(CSDN 私信)。侵权必究。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/30 4:53:27

CTF学习/crypto/零宽字符与 Unicode 隐写

零宽字符与 Unicode 隐写 考点概念 零宽字符是宽度为零、肉眼不可见的 Unicode 字符 包括零宽空格&#xff08;U200B&#xff09;、零宽非连接符&#xff08;U200C&#xff09;、零宽连接符&#xff08;U200D&#xff09;、零宽不中断空格&#xff08;UFEFF&#xff09; 不占…

作者头像 李华
网站建设 2026/10/30 4:52:38

基于 Traces 数据的 Agent 评测落地方案

基于 Traces 数据的 Agent 评测方案 Trace 数据是 Agent 全执行链路的结构化日志&#xff08;包含规划、工具调用、记忆、推理、输出的每一步输入输出与状态&#xff09;&#xff0c;基于 Trace 做评测的核心价值是跳出「只看最终答案」的局限&#xff0c;实现过程级精准判分与…

作者头像 李华
网站建设 2026/10/30 4:52:05

自我意象管理

自我意象的四维模型每个自我意象&#xff08;理想/当下&#xff09;都从四个维度来描述&#xff1a;维度说明形象穿着、外貌、气质地点在什么环境/城市/空间中行为方式做什么工作、做什么事情绪风格整体情绪状态、心态第一步&#xff1a;写理想自我意象想象十年后最美好的自己&…

作者头像 李华