基础算法题—水仙花数
题目:打印出所有的”水仙花数”
百度百科:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
水仙花数是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。
编码:
// 严格来说三位数的3次幂数才成为水仙花数。所以从100开始到999
for (int i = 100; i < 1000; i++) {
// 百位数(int类型舍弃小数位)
int a = i / 100;
// 十位数
int b = (i - a * 100) / 10;
// 个位数
int c = i - a * 100 - b * 10;
// 计算百位数立方+十位数立方+个位数立方的总和
int num = a * a * a + b * b * b + c * c * c;
// 每位上数字的3次幂之和等于它本身则为水仙花数
if (num == i) {
System.out.println(i);
}
}
获取百位数、十位数、和个位数还可使用substring进行截取
for (int i = 100; i < 1000; i++) {
//当前数转为String类型
String numString = i + "";
// 百位数
int a= Integer.parseInt(numString.substring(2));
// 十位数
int b= Integer.parseInt(numString.substring(1, 2));
// 个位数
int c= Integer.parseInt(numString.substring(0, 1));
int num = a* a* a+ b* b * b+ c* c* c;
if (num == i) {
System.out.println(i);
}
}
理解了水仙花数后,其他自幂数的思路也都相同
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数
PS:以上如若有错误,还望不吝指正。