一.什么是水仙花数
水仙花数也被称为超完全数字不变数自恋数、自幂数、阿姆斯 壮数或阿姆斯特朗数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
- 定义:
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
附:其他位数的自幂数名字
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数 - 常见水仙花数
水仙花数又称阿姆斯特朗数。
三位的水仙花数共有4个:153,370,371,407;
四位的四叶玫瑰数共有3个:1634,8208,9474;
五位的五角星数共有3个:54748,92727,93084;
六位的六合数只有1个:548834;
七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;
八位的八仙数共有3个:24678050,24678051,88593477
……
二.如何求取水仙花数
这里主要介绍三位数的水仙花数如何求取
思考思路:
根据水仙花数的定义,我们需要得到一个数对应的个位十位百位,接着去确定每个位对应的数的三次方之和是不是这个数。
代码实现:
public class NarcissisticNumber {
public static void main(String[] args) {
for(int i = 100; i < 1000; i++) {
narcissisticNumber(i);
}
}
public static void narcissisticNumber(int num) {
int a = num%10; //求取个位
int b = (num/10)%10; //求取十位
int c = num/100; //求取百位
if((Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3)) == num) {
System.out.print(num + " ");
}
}
}
运行结果:
存在问题:
这只是个示例,你也可以自己根据思路编写代码,同样实现这样的问题求解。