雷割数のJava実装について
1384 ワード
雷劈数:カプリガというインドの数学者がいます.彼はある旅行の中で、激しい嵐に出会って、稲妻が鳴った後、道端の看板を見て、雷に半分に割れて、半分に30と書いて、もう半分に25と書いていました.この時、カプリガの脳の中で突然1つの絶妙な数学の関係を発見しました:30+25=55 55^2=3025、2つの半分に割った数を合わせて、更に平方、ちょうど元の数字です.最初の発見者の名前によれば、この怪数は「カプリガ数」または「雷割数」と命名された.
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+" ");
}
}
}
}