继金字塔数142857外第二组世界上最神奇的数字

来源:互联网 发布:js切换显示和隐藏密码 编辑:程序博客网 时间:2024/04/27 20:08

出处:IT168 http://publish.it168.com/2008/0107/20080107043101.shtml

 2008年1月发表于IT168

元旦节那天上午刚打开手机,就收到一美眉发来的短信,短信内容大致为“我把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://softbbs.it168.com/thread-530670-1-1.html

原创粉丝点击