有趣的雷劈数

今天在网上乱逛,发现一个帖子,说60481729这个QQ查不到,发帖人提问为什么极其普通的一个号TX一直不敢放出来呢?楼下有人给出解答:
把60481729这个QQ号码从中间劈开,成6048和1729两个数,然后相加,即6048+1729=7777,而7777×7777=60481729

这种数字叫做雷劈数,传说有位叫卡普利加的印度数学家。他在一次旅行中,遇到猛烈的暴风雨,电闪雷鸣过后,他看到路边一块牌子,被雷电劈成了两半,一半上写着30,另一半写着25。这时,卡普利加的脑中忽然发现了一个绝妙的数学关系:30+25=55 55^2=3025,把劈成两半的数加起来,再平方,正好是原来的数字。按照第一个发现者的名字,这种怪数被命名为“卡普利加数”或“雷劈数”。

老马毕竟是商人,还是有点迷信,万一哪天遭雷劈了呢,是吧。干事业还是得图个吉利!

当然,这只是随便说说,也不知道真假。不过这个雷劈数还是很有意思的,写了个程序找100000000以下的雷劈数,写出来用了1分钟,运行用了2分钟,瀑布汗……

还是比较多的嘛!81,2025,3025,9801,494209,998001,24502500,25502500,52881984,60481729,99980001

代码比较丢人。。。

            for (int i = 0; i < 100000000; i++)

            {

                if (i.ToString().Length % 2 != 0) 

                  continue;//结束当此循环,进入下一循环

              int a = int.Parse(i.ToString().Substring(0,i.ToString().Length/2)); 

              int b = int.Parse(i.ToString().Substring(i.ToString().Length/2,i.ToString().Length/2)); 

              if ((a + b) * (a + b) == i)

                    label1.Text += "    " + i;

            }

写完这个文章,觉得代码确实丢人,又花1分钟改进了一下,竟然半秒不到就算完了。。。

            for (int i = 0; i < 100000000; i++)

            {

                int s = i * i;

                if (s >= 100000000)

                    return;

                if (s.ToString().Length % 2 != 0) 

                  continue;

               int a = int.Parse(s.ToString().Substring(0, s.ToString().Length / 2));

               int b = int.Parse(s.ToString().Substring(s.ToString().Length / 2, s.ToString().Length / 2));

               if ((a + b) * (a + b) == s)

                    label1.Text += "    " + s;

            }

转载于:https://www.cnblogs.com/xygao/archive/2011/06/17/2083801.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值