水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、
自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number).
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3^ + 5^3^+ 3^3^ = 153)。
三位的水仙花数共有4个:153,370,371,407;
class Daffodil {
public static void main(String[] args) {
/*
1.确定范围: 100~999
2.获取三位数每个位上数字:
获取百位数字: 三位数 / 100
获取十位数字: 三位数 % 100 / 10
个位数字: 三位数 % 10
3. 个位数3次方+十位数3次方+百位数3次方 == 三位数
4. 满足条件输出三位数
*/
for(int i = 100; i <= 999; i++){
// 获取百位数字: 三位数 / 100
int b = i / 100;
// 获取十位数字: 三位数 % 100 / 10
int s = i % 100 / 10;
// 个位数字: 三位数 % 10
int g = i % 10;
// 个位数3次方+十位数3次方+百位数3次方 == 三位数
if(b*b*b + s*s*s + g*g*g == i){
System.out.println(i);
}
}
}
}
四叶玫瑰数
四位数各位上的数字的四次方之和等于本身为四叶玫瑰数。
四位的自幂数数共有3个:1634,8208,9474。
class Demo02_FourLeafRose {
public static void main(String[] args) {
System.out.println("四叶玫瑰数 :");
for (int i = 1000;i <= 9999 ;i++){
int th = i/1000%10;
int hu = i/100%10;
int te = i/10%10;
int on = i%10;
int sum = th*th*th*th + hu*hu*hu*hu + te*te*te*te + on*on*on*on;
if(sum == i){
System.out.println(i);
}
}
}
}
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
附:其他位数的自幂数名字
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数