- 水仙花数的定义(百度)
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数
2.Java代码
public class TestWaterFlowes {
public static void main(String[] args) {
System.out.println("水仙花数方法1");
waterFlower1();
System.out.println("=========================");
System.out.println("水仙花数方法2");
waterFlower2();
System.out.println("=========================");
System.out.println("四叶玫瑰数");
fourLeafRose();
}
public static void waterFlower1(){
for (int i = 100; i <= 999; i++) {
int baiwei = i/100;//获取百位上的数字
int shiwei = (i%100)/10;//获取十位上的数字
int gewei = i-baiwei*100-shiwei*10;//获取个位上的数字
if (baiwei*baiwei*baiwei+shiwei*shiwei*shiwei+gewei*gewei*gewei == i) {
System.out.println(i+"是水仙花数");
}
}
}
public static void waterFlower2(){
for (int i = 100; i <= 999; i++) {
int baiwei = i/100;//获取百位上的数字
int shiwei = (i/10)%10;//获取十位上的数字
int gewei = i%10;//获取个位上的数字
if (baiwei*baiwei*baiwei+shiwei*shiwei*shiwei+gewei*gewei*gewei == i) {
System.out.println(i+"是水仙花数");
}
}
}
//四叶玫瑰数
public static void fourLeafRose(){
for (int i = 1000; i <=9999; i++) {
int gewei = i%10;//获取个位数
int shiwei = i/10%10;//获取十位数
int baiwei = i/100%10;//获取百位数
int qianwei = i/1000%10;//获取千位数
if ((gewei*gewei*gewei*gewei+shiwei*shiwei*shiwei*shiwei+baiwei*baiwei*baiwei*baiwei+
qianwei*qianwei*qianwei*qianwei)==i) {
System.out.println(i+"四叶玫瑰数");
}
}
}
}
结果
水仙花数方法1
153是水仙花数
370是水仙花数
371是水仙花数
407是水仙花数
=========================
水仙花数方法2
153是水仙花数
370是水仙花数
371是水仙花数
407是水仙花数
=========================
四叶玫瑰数
1634四叶玫瑰数
8208四叶玫瑰数
9474四叶玫瑰数