标题: 关于"水仙花数"的解答 [打印本页] 作者: 呆呆devil 时间: 2018-6-12 13:24 标题: 关于"水仙花数"的解答 我看了今年的视频,发现对比往年视频并没有水仙花数求个数的问题,但我个人觉得水仙花数这个题目还是有必要钻研一下的,这个题目能对大家对于运算符和循环的使用是有着巨大的好处,下面我来给大家发布一下在这个问题,有兴趣的同学的可以看下。
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
那么水仙数有哪些呢?
解答:开始看到这问题我也有些疑惑,按着我开始的思路假设个位为a,十位为b,百位为c,那么按我的想法a的三次方+b三次方+c三次方=水仙花数,9>a>0,9>b>0,9>c>0在用循环求出所有符合的数字。但在后面我遇到了问题for循环并不能实现我的想法,无法让a=0,b=0,c=1这样一次次逐步上升,接着我就改变了思路,下面是我之后所写的代码,有for和while两种循环方式。
求水仙花数
class Demo {
public static void main(String[] args) {
int d = 0;
for (int i = 100;i <= 999 ; i++){
int a = i % 10;
int b = i /10 % 10;
int c = i /10 /10 %10;
if (i == a*a*a+b*b*b+c*c*c){
d ++;
}
}
System.out.println(d);
}
}
class Demo {
public static void main(String[] args) {
int x =100;
while (x < 1000){
int a = x % 10;
int b = x /10 %10;
int c =x /10 /10 ;
if (x == a*a*a+b*b*b+c*c*c){
System.out.println(x);
}
x++;
}
}
}
以上代码大家可以借鉴一下,并思考下为何这样可以实现。