水仙花數是指一個三位數,它的各個位上的數字的立方和等于該數本身。例如:153,是因為13+53+33=153。這個數在古代稱為"自戀數",因為它的每一位數字立方數相加后,正好等于自身,因此自認為"最美麗、最出色"。
如何用Java寫水仙花數代碼
Java語言是一個功能強大的編程語言,它可以用來編寫各種類型的程序。下面是一個用Java編寫水仙花數的代碼示例:
//定義變量int i = 0, j = 0, k = 0; //循環生成所有三位數for (i = 1; i <= 9; i++) { for (j = 0; j <= 9; j++) { for (k = 0; k <= 9; k++) { //計算立方和 int n = i * 100 + j * 10 + k; int m = i * i * i + j * j * j + k * k * k; //判斷是否為水仙花數 if (n == m) { System.out.println(n); } } }}
以上代碼中,我們定義了三個變量i、j和k,用于生成所有的三位數。之后我們使用for循環遍歷所有的三位數,并計算它的各個位上的數字的立方和。最后判斷是否與它本身相等,如果相等就輸出這個數字。
如何改進水仙花數代碼
以上的Java代碼可以用于生成所有的水仙花數,但是如果我們只想生成1000以內的水仙花數,這個程序就會變得很慢。因此,我們需要對代碼進行優化,讓它更加高效。
我們可以將for循環中的i、j和k的范圍縮小到0~9之間,然后再將生成的三位數與1000做比較,如果大于1000就退出循環。這樣可以大大提高代碼的運行效率。
//定義變量int i = 0, j = 0, k = 0; //循環生成所有三位數for (i = 0; i <= 9; i++) { for (j = 0; j <= 9; j++) { for (k = 0; k <= 9; k++) { //計算立方和 int n = i * 100 + j * 10 + k; int m = i * i * i + j * j * j + k * k * k; //判斷是否為水仙花數 if (n == m && n < 1000) { System.out.println(n); } } }}
以上代碼中,我們調整了i、j和k的范圍,并在判斷水仙花數時加入了一個小于1000的條件,避免了生成大于1000的數字。這樣可以大大提高代碼的運行效率。