浏览 3172 次
锁定老帖子 主题:关于雷劈数的Java实现
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-22
最后修改:2011-04-22
雷劈数:有位叫卡普利加的印度数学家。他在一次旅行中,遇到猛烈的暴风雨,电闪雷鸣过后,他看到路边一块牌子,被雷电劈成了两半,一半上写着30,另一半写着25。这时,卡普利加的脑中忽然发现了一个绝妙的数学关系:30+25=55 55^2=3025,把劈成两半的数加起来,再平方,正好是原来的数字。按照第一个发现者的名字,这种怪数被命名为“卡普利加数”或“雷劈数”。
package com.gzitc.plnum; public class Demon { /** * isDemo(long num)判断参数num是否为雷劈数 * @param num * @return */ public boolean isDemon(long num) { //num1、num2是分出来的数 long num1,num2,t_num; String ts = String.valueOf(num); int length = ts.length(); //负数 if(ts.startsWith("-")) { return false; } //位数小于两位 if(ts.length() < 2) { return false; } //奇数位 if(length % 2 != 0) { return false; } num1 = Long.parseLong(ts.substring(0,length/2)); num2 = Long.parseLong(ts.substring(length/2,length)); t_num = num1 + num2; if(t_num * t_num == num) { return true; } else { return false; } } public static void main(String args[]) { Demon d = new Demon(); for(long i = 10; i < 999999999; i++) { if(d.isDemon(i)) { System.out.print(i+" "); } } } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-04-23
这个雷劈数确实有意思。
|
|
返回顶楼 | |
发表时间:2011-04-26
有点意思哈
|
|
返回顶楼 | |
发表时间:2011-04-26
你这个方法好像缺少55*55=3025 “3025”="30"+"25"的验证
|
|
返回顶楼 | |
发表时间:2011-04-29
加瓦人生 写道 你这个方法好像缺少55*55=3025 “3025”="30"+"25"的验证
运行结果: 81 2025 3025 9801 494209 998001 24502500 25502500 …… |
|
返回顶楼 | |