1. 程式人生 > >水仙花數的java演算法實現

水仙花數的java演算法實現

本文由博主原創,接受意見,不喜勿噴。本文為小白所創,不考慮時間複雜度和空間複雜度:

  • 水仙花數:三位數,其各個位數上的數字的立方和等於該三位數本身。

分析

1.首先第一反應應該是這個題咱們用迴圈來做,那三位數的話咱們可以確定迴圈的範圍為100到999;
2.其次,獲取到迴圈到的每個三位數的個位、十位和百位;

  (1)個位:一個三位數除以10取餘數的話得到的一定是它的個位上的數;
  (2)十位:一個三位數減掉它的個位上的數再除以10取餘得到的就是它的十位上的數;
  (3)百位:一個三位數減掉它的個位數再減掉它的十位數,然後再除以100,得到的就是它百位上的數字;

3.求出個位、十位和百位的立方和;

  立方和:個位數的立方+十位數的立方+百位數的立方;

4.將求得的立方和與當前的三位數相比較,看是否相等,如果相等的話呢,當前的這個三位數就是水仙花數,列印輸出。

程式碼塊

        int g;//個位數
        int s;//十位數
        int b;//百位數
        for(int i=100;i<=999;i++)
        {
            g = i%10;//獲取個位數
            s = (i-g)%100;//獲取十位數
            b = (i - g - s)/100;//獲取百位數
            if
(i == ((g*g*g) + (s*s*s) + (b*b*b)))//判斷個位、十位和百位的立方和是否和當前的三位數相等 { System.out.print("-" + i);//如果是就列印輸出 } }