关于雷劈数的Java实现

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

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+" ");
}
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值