1. 程式人生 > 其它 >Java經典演算法題-(打出三位數的所有水仙花數)

Java經典演算法題-(打出三位數的所有水仙花數)

技術標籤:總結經驗實用開發使用java演算法

**題目:**打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如: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+"個");  //輸出水仙花數的總數
  }
}