Java經典演算法題-(打出三位數的所有水仙花數)
阿新 • • 發佈:2021-01-21
**題目:**打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
**程式分析:**利用for迴圈控制100-999個數,每個數分解出個位,十位,百位
**程式碼:**
第一種:
public class ShuiXianHua {
public static void main(String[] args) {
for ( int i = 100; i <1000 ; i++) {
int firstNum = i/100;
int secondNum = i/10%10;
int thirdNum = i%10;
if(firstNum*firstNum*firstNum + secondNum*secondNum*secondNum+thirdNum*thirdNum*thirdNum == i){
System.out.println("水仙花數為:" + i);
}
}
}
}
第二種:
public class Daffodil {
public static void main(String[] args) {
int count = 0; //定義水仙花數的個數
for(int i=100;i<=10000;i++){ //水仙花數範圍
int b = i/100; //取得百位數
int s = (i-100*b)/10; //取得十位數
int g = (i-s*10-b*100); //取得個位數
if(i==g*g*g+s*s*s+b*b*b){ //水仙花數判定
System.out.print(i+" "); //輸出符合條件的數
count++ ;
}
}
System.out.println(); //換行
System.out.println("水仙花數總共有"+count+"個"); //輸出水仙花數的總數
}
}
第三種:while迴圈:
public class Daffodil {
public static void main(String args[]){
int i=100;
int count=0; //定義水仙花數的個數
while(i<10000){
int b = i/100; //取得百位數
int s = (i-100*b)/10; //取得十位數
int g = (i-s*10-b*100); //取得個位數
if(i==g*g*g+s*s*s+b*b*b){ //水仙花數判定
System.out.print(i+" "); //輸出符合條件的數
count++;
}
i+=1;
}
System.out.println();
System.out.println("水仙花數總共有"+count+"個"); //輸出水仙花數的總數
}
}