关于雷劈数的Java实现

雷劈数:有位叫卡普利加的印度数学家。他在一次旅行中,遇到猛烈的暴风雨,电闪雷鸣过后,他看到路边一块牌子,被雷电劈成了两半,一半上写着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+"  ");
			}
		}
	}
}

你可能感兴趣的:(java)