|
人才网-提供最新的人才网信息,人才信息查询,人才网招聘服务
|
|
|
142857外第二组世界上最神奇的数字 |
|
|
元旦节那天上午刚打开手机,就收到一美眉发来的短信,短信内容大致为“我把142857这六个数字化作快乐、幸福、幸运、美满、甜蜜、温馨。我再把你人生的各个阶段分为1-6,然后我把它们分别相乘,每个结果都是我的祝福。祝新年愉快!”。开始还没太在意,但后来想想为什么有那样的数字呢?难道隐藏着什么秘密?于是笔者打开电脑,好奇地在电脑上算了算: 142857×1=142857 142857×2=285714 142857×3=428571 142857×4=571428 142857×5=714285 142857×6=857142 看着上面的结果真是大吃一惊,真的挺有意思,于是又将短信转发给了一堆朋友,想想真是一组神奇的数字。哈哈,好奇的你是否跟我一样,也想知道还有哪些组也有类似的特性呢?是否想找出与别人不同的一组数字呢?下面跟我一起来研究下吧。 要找出第二组类似的数字,肯定不能凭空乱想,也不能蒙,必须靠程序计算。笔者熟悉写web程序,就在页面中研究了一下算法,验证了一下,最后发现一个很有意思的结果,从1到999999999999999之间共出现这样的数组竟然有10个!分别为142857, 1429857,14299857,142999857,1429999857,14299999857,142999999857,1429999999857,14299999999857,142999999999857。 细心的网友肯定发现了,新找出来的每组数字其实相当于在142三位的后面加了一个9,而且一组里面的每个数字一大一小相加都为9,如142857中,一大一小为:1+8=9,次大次小:2+7=9,再次:4+5=9!由于本人计算机计算能力有限,就不知道中间再加些9是不是还符合这样的规则了。 测试这段数据的算法如下(ASP程序实现): 检测一定范围内的数,如这个数分别与1、2、3、4、5、6相乘的结果位数与原数相同,并且结果中的每个数都能够在原数中找到,那就符合我们上面的原则。具体代码如下:(运行时间有点长) <% server.ScriptTimeout=3600 '控制IIS脚本运行时间,以秒为单位 for i=1 to 999999999999999 '循环测试数字 tt=0 '是否符合条件的控制开关 for j=1 to 6 '分别与六个数相乘 ij=i*j if len(ij)<>len(i) then '如果长度不一致,设置开关并退出循环 tt=2 exit for else for k=1 to len(ij) if(instr(i,mid(ij,k,1)))=0 then '判断每一个数字在原数中是否存在 tt=1 exit for end if next if tt=1 then exit for end if end if next if tt=0 then response.write(i&"<br/>") end if next %> 后记:后来翻阅资料考证,此组数字最早出现在埃及金字塔内,至于为何出现,至今都是个谜。 |
| 人才网http://www.job128.com 信息部 |