738
魔獸
daffodil
import java.util.ArrayList;
public class Daffodil {
/**
* 打印出100-999之間所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。
* 例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//第二種
// ArrayList list = getAllDaffodil();
// System.out.println(" 1000以內的水仙花數字分別是 " + list + " 總數為 " +
// list.size());
//第一種
for (int i = 101; i < 1000; i++) {
if (isDaffodil(i))
System.out.println(i + " 是一個水仙花數字 \n");
}
// System.out.println(126%100/10);
}
/**
*
* @return ArrayList 返回所有水仙花的數組集合
*/
private static ArrayList getAllDaffodil() {
double m;
double n;
double i, j, k, temp = 10;
ArrayList list = new ArrayList();
for (i = 1; i < temp; i++) {// 百位
for (j = 0; j < temp; j++) {// 十位
for (k = 0; k < temp; k++) {// 個位
// Returns the closest double approximation of the result of
// raising
m = Math.pow(i, 3) + Math.pow(j, 3) + Math.pow(k, 3);
n = i * 100 + j * 10 + k;
// System.out.println(" i = " + i + " n = " + n + " m = " +
// m);
if (m == n) {
list.add((int) n);
}
}
}
}
return list;
}
/**
*
* @param n 傳入一個數字進行判斷
* @return 是水仙花數字返回 true 不是返回false
*/
private static boolean isDaffodil(int n) {
int bai, shi, ge;
double temp;
if (n <= 100 || n > 999)
return false;
ge = n % 10; // 三位數對10取餘數 即可得到個位數字
shi = n % 100 / 10;// 三位數對100取餘數 即可得到後兩位數字,再除以10,可以得到十位上的數字
bai = n / 100; //處以100的百位數字
temp = (Math.pow((double)ge, 3) + Math.pow((double)shi, 3) + Math.pow((double)bai, 3));
// System.out.println("n = " + n +" " + bai+" "+shi+" "+ge+" "+ " temp = " + temp);
if (n == temp) {
return true;
}
return false;
}
}
最後更新:2017-04-03 12:53:59