2019-04-13

     由帝都美眉抛绣球引发的数学问题 如果我要问你:EXCEL2016中最大行列数是多少,即使你是专家,也未必能立刻回答出来,可能在潜意识里,你会觉得这个实在是太没用的知识了,即使知道了,也毫无用途。你要这么想,很多时候是没错的,但,凡事总有例外,今天,我就忽然发现这个问题的答案对我们有多重要。

      图1 帝都美女抛绣球选夫广告

     事情的原委是这样的,今天,有人在微信群里发了一张图片,(见上图),上有文字,大意是说,帝都有多金又多情的美女,忽然就怀了思春的念头,想要找个心仪的男人,不要求你年轻帅气,也不要求你有房有车,只要你答对她的问题,她就会揽你入怀,做她的白马王子。

      我虽然知道自己绝无入选的可能,可还是忍不住想解开这个难题。思路似乎很简单,把她给出的数:707829217做因式分解,从中找出一对素数,大者在先,小的在后,放在一起就OK了。很显然,一般情况下,因式是成对出现的。


      图2,公式法因式分解

     前几年,我做过一个因式分解的公式,(见上图),当时很是得意了一阵子。如果把它拿来直接用似乎就可以解决这个问题了。

      为了便于理解,我先把该表及其中的公式简要介绍一下: B1中公式是: =IF(A3="","",IF(SUM(IF(MOD(A3,ROW(INDIRECT("2:"&INT(A3/2))))>0,0,1))=0,"",SUM(IF(MOD(A3,ROW(INDIRECT("2:"&INT(A3/2))))>0,0,1)))) 因为是数组公式,所以要同时按下ENTER键,SHIFT键和CTRL键,公式下拉。

     在C3中输入公式:= IFERROR(IF(COLUMN(A3)>$B3,"",SMALL(IF(MOD($A3,COLUMN(INDIRECT("2:"&INT($A3/2))))=0,COLUMN(INDIRECT("1:"&$B3))),COLUMN(B3))),""),这也是数组公式,同时按下ENTER键,SHIFT键和CTRL键,右拉,之后,下拉。

      从本质上讲,全表就这两个公式。

      接下来,似乎就很简单了,把707829217输入到A7中时,该数的因式就全在第七行中了。 可是,与乐观的预期相反,当把707829217输入到A7中时,我吃惊的发现B7中显示错误。B7后面诸单元格中也是错误,因为用了函数IFERROR,所以,显示的是空格。

      考察上面诸行公式表现的都好好的,为啥到了这儿结果就错了呢。真是百思不得其解。 仔细考察B7中公式,发现公式中用了ROW函数,在EXCEL中最大列是1048576,一个百万级的7位数,而帝都美女给出的数707829217,可是九位数呀,或许,该表里的错误就与这个有关。

      经测试发现2×1048576+2,是出现错误结果的最小数。换言之,只要A7中的数大于或者等于2097154(=2×1048576+2),那结果就一定是错误的了。

     错误的来源找到了,可是,怎样修正这个错误呢,想了很长时间,也没找到合适的办法, 请问,聪明的你,你可有解决这个问题的方法么?

     当然,请放心,美女你领走,我只要这个问题的答案。呵呵呵呵,真的。

      以上权作为见天的作业。

      此致。

     北山采薇客。 2019年4月13日夜。

你可能感兴趣的:(2019-04-13)