使用Java打印出所有的水仙花數(shù)的解決方法
前言
水仙花數(shù)(Narcissistic number)也被稱為超完全數(shù)字不變數(shù)、自戀數(shù)、自冪數(shù),是指一個(gè) n 位數(shù) (n≥3),它的每個(gè)位上的數(shù)字的 n 次冪之和等于它本身。對于三位數(shù)而言,如果一個(gè)三位數(shù)的各位數(shù)字的立方和等于這個(gè)數(shù)本身,那么這個(gè)數(shù)就是水仙花數(shù)。
例如,153 是一個(gè)水仙花數(shù),因?yàn)?\(1^3 + 5^3 + 3^3 = 153\)。
本文將通過 Java 語言來實(shí)現(xiàn)一個(gè)簡單的程序,用于找出并打印所有三位數(shù)中的水仙花數(shù)。
實(shí)現(xiàn)思路
- 確定范圍:由于水仙花數(shù)是三位數(shù),因此我們的查找范圍是 100 到 999。
- 分解數(shù)字:對于每一個(gè)三位數(shù),我們需要將其分解為百位、十位和個(gè)位。
- 計(jì)算立方和:計(jì)算這三個(gè)位置上數(shù)字的立方和。
- 比較結(jié)果:如果計(jì)算出的立方和等于原數(shù),則該數(shù)為水仙花數(shù)。
- 輸出結(jié)果:將找到的所有水仙花數(shù)打印出來。
Java代碼實(shí)現(xiàn)
public class NarcissisticNumber {
public static void main(String[] args) {
// 遍歷100到999之間的所有數(shù)字
for (int num = 100; num <= 999; num++) {
if (isNarcissistic(num)) {
System.out.println(num);
}
}
}
/**
* 判斷一個(gè)數(shù)是否為水仙花數(shù)
* @param num 待判斷的數(shù)
* @return 如果是水仙花數(shù)返回true,否則返回false
*/
private static boolean isNarcissistic(int num) {
int originalNum = num;
int sum = 0;
// 分解數(shù)字并計(jì)算立方和
while (num > 0) {
int digit = num % 10;
sum += Math.pow(digit, 3);
num /= 10;
}
// 判斷立方和是否等于原數(shù)
return sum == originalNum;
}
}運(yùn)行結(jié)果
運(yùn)行上述代碼后,程序?qū)⑤敵鏊械娜粩?shù)水仙花數(shù):
153 370 371 407
下面是一個(gè)用Java編寫的示例代碼,用于找出并打印所有的水仙花數(shù)(即三位數(shù)中,其各個(gè)位上的數(shù)字立方和等于該數(shù)本身的數(shù))。
public class NarcissisticNumber {
public static void main(String[] args) {
// 遍歷所有三位數(shù),從100到999
for (int number = 100; number <= 999; number++) {
if (isNarcissistic(number)) {
System.out.println(number);
}
}
}
/**
* 判斷一個(gè)數(shù)是否是水仙花數(shù)
* @param number 要判斷的數(shù)
* @return 如果是水仙花數(shù)返回true,否則返回false
*/
public static boolean isNarcissistic(int number) {
int originalNumber = number;
int sum = 0;
// 提取每一位數(shù)字并計(jì)算立方和
while (number > 0) {
int digit = number % 10;
sum += Math.pow(digit, 3);
number /= 10;
}
// 判斷立方和是否等于原數(shù)
return sum == originalNumber;
}
}代碼解釋:

- 主方法
main?:
- 使用一個(gè) ?
?for?? 循環(huán)遍歷從100到999的所有三位數(shù)。 - 對于每個(gè)數(shù),調(diào)用 ?
?isNarcissistic?? 方法判斷它是否是水仙花數(shù)。 - 如果是水仙花數(shù),則打印該數(shù)。
- 輔助方法
isNarcissistic?:
- 接受一個(gè)整數(shù) ?
?number?? 作為參數(shù)。 - 保存原始數(shù) ?
?originalNumber??,以便后續(xù)比較。 - 使用 ?
?while?? 循環(huán)提取每一位數(shù)字,并計(jì)算其立方和。 - 最后,判斷立方和是否等于原始數(shù),如果是則返回 ?
?true??,否則返回 ??false??。
運(yùn)行結(jié)果:

運(yùn)行上述代碼后,輸出將是所有的水仙花數(shù):
153 370 371 407
這些數(shù)都是三位數(shù),并且它們各自的各位數(shù)字的立方和等于該數(shù)本身。希望這個(gè)示例對你有幫助!如果有任何問題或需要進(jìn)一步的解釋,請隨時(shí)告訴我。當(dāng)然可以!下面是一個(gè)詳細(xì)的Java程序,用于找出并打印所有的水仙花數(shù)。
什么是水仙花數(shù)?
水仙花數(shù)(Narcissistic number)是指一個(gè)三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如,153 是一個(gè)水仙花數(shù),因?yàn)椋?53 = 1^3 + 5^3 + 3^3
Java代碼實(shí)現(xiàn)
public class NarcissisticNumber {
public static void main(String[] args) {
// 遍歷所有三位數(shù),從100到999
for (int num = 100; num <= 999; num++) {
if (isNarcissistic(num)) {
System.out.println(num);
}
}
}
// 判斷一個(gè)數(shù)是否是水仙花數(shù)
public static boolean isNarcissistic(int num) {
int originalNum = num;
int sum = 0;
// 提取每一位數(shù)字并計(jì)算立方和
while (num > 0) {
int digit = num % 10; // 取出個(gè)位數(shù)
sum += Math.pow(digit, 3); // 計(jì)算立方并累加
num /= 10; // 去掉個(gè)位數(shù)
}
// 判斷立方和是否等于原數(shù)
return sum == originalNum;
}
}代碼解釋
- 主方法
main?:
- 使用一個(gè) ?
?for?? 循環(huán)遍歷所有三位數(shù),從100到999。 - 對于每一個(gè)數(shù),調(diào)用 ?
?isNarcissistic?? 方法判斷它是否是水仙花數(shù)。 - 如果是水仙花數(shù),則打印該數(shù)。
- 輔助方法
isNarcissistic?:
- 接受一個(gè)整數(shù) ?
?num?? 作為參數(shù)。 - 將原數(shù)保存在 ?
?originalNum?? 中,以便后續(xù)比較。 - 初始化 ?
?sum?? 為0,用于存儲各位數(shù)字的立方和。 - 使用 ?
?while?? 循環(huán)提取每一位數(shù)字:
- ?
?digit = num % 10??:取出當(dāng)前數(shù)的個(gè)位數(shù)。 - ?
?sum += Math.pow(digit, 3)??:計(jì)算該位數(shù)字的立方并累加到 ??sum??。 - ?
?num /= 10??:去掉當(dāng)前數(shù)的個(gè)位數(shù)。
- 最后,判斷 ?
?sum?? 是否等于 ??originalNum??,如果相等則返回 ??true??,否則返回 ??false??。
運(yùn)行結(jié)果
運(yùn)行上述程序,輸出將是所有三位數(shù)中的水仙花數(shù):
153 370 371 407
這些數(shù)都是滿足條件的水仙花數(shù)。希望這個(gè)解釋對你有幫助!如果有任何問題或需要進(jìn)一步的說明,請隨時(shí)告訴我。
以上就是使用Java打印出所有的水仙花數(shù)的解決方法的詳細(xì)內(nèi)容,更多關(guān)于Java打印水仙花數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java設(shè)計(jì)模式之抽象工廠模式(Abstract?Factory)
這篇文章主要為大家詳細(xì)介紹了Java設(shè)計(jì)模式之抽象工廠模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
idea啟動spring項(xiàng)目中文亂碼的解決方法
本文主要介紹了idea啟動spring項(xiàng)目中文亂碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Java實(shí)現(xiàn)添加文字水印&圖片水印的方法詳解
為圖片添加水印的主要作用是保護(hù)圖片版權(quán),防止圖片被未經(jīng)授權(quán)的人使用或傳播。本文為大家介紹了Java實(shí)現(xiàn)添加文字水印&圖片水印的具體方法,需要的可以參考一下2023-02-02
Mybatis?List列表In查詢實(shí)現(xiàn)的注意事項(xiàng)說明
這篇文章主要介紹了Mybatis?List列表In查詢實(shí)現(xiàn)的注意事項(xiàng)說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Java8的Lambda遍歷兩個(gè)List匹配數(shù)據(jù)方式
這篇文章主要介紹了Java8的Lambda遍歷兩個(gè)List匹配數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java微服務(wù)無損發(fā)布生產(chǎn)實(shí)戰(zhàn)案例及驗(yàn)證
微服務(wù)架構(gòu)是一項(xiàng)在云中部署應(yīng)用和服務(wù)的新技術(shù),這篇文章主要介紹了Java微服務(wù)無損發(fā)布生產(chǎn)實(shí)戰(zhàn)及驗(yàn)證的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-10-10
SpringBoot應(yīng)用War包形式部署到外部Tomcat的方法
這篇文章主要介紹了SpringBoot應(yīng)用War包形式部署到外部Tomcat的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
Spring?Security使用數(shù)據(jù)庫登錄認(rèn)證授權(quán)
本文主要介紹了Spring?Security使用數(shù)據(jù)庫登錄認(rèn)證授權(quán),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

