关于 水仙花数的几种写法的总结:
百度百科可知:水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身
(例如:1^3 + 5^3+ 3^3 = 153)。
代码如下:
public class Demo {
public static void main(String [] args) {
/* for (int i = 0; i < 1000; i++) {
思考:水仙花数 包不包含两位数? 一位数? 题目没有提示n>=3...
if (i<10) {
int a = i % 10 ;
if (i==a) {
System.out.println(i);
} else if (i<100) {
int b = i % 10;
int c = i / 10;
if (i==b*b+c*c) {
System.out.println(i);
}
}
} else {
int bai = i / 100 ;
int shi = i % 100 / 10 ;
int ge = i % 10 ;
if (i==bai*bai*bai+shi*shi*shi+ge*ge*ge) {
System.out.println(i);
}
}
}*/
// 百度得知水仙花数是指三位数:
for (int i = 100; i < 1000; i++) {
// 用 for 来 输出 ;
int bai = i / 100 ;
int shi = i % 100 / 10 ;
int ge = i % 10 ;
if (i==bai*bai*bai+shi*shi*shi+ge*ge*ge) {
System.out.println(i);
}
}
System.out.println("--------------------------------");
// 接下来用 while ;
int x = 100 ;
while (x<1000) {
int a = x % 10;
int b = x / 10 % 10;
int c = x / 100;
if (x==a*a*a+b*b*b+c*c*c) {
System.out.println(x);
}
x++;
}
System.out.println("--------------------------------");
//用 do while
int y = 100;
do {
int d = y / 100 ;
int e = y % 100 / 10 ;
int f = y % 10 ;
if (d*d*d+e*e*e+f*f*f==y) {
System.out.println(y);
}
y++;
} while (y < 1000 );
System.out.println("--------------------------------");
// 用三层循环?!
for (int i = 1 ; i <= 9;i++ ) {
for (int j = 0 ; j <= 9 ; j++) {
for ( int k = 0 ; k <= 9 ; k++) {
if (i*i*i+j*j*j+k*k*k==100*i+10*j+k) {
// Math.powe(i,3)+Math.powe(i,3)+Math.powe(i,3)==100*i+10*j+k
System.out.println(100*i+10*j+k);
}
}
}
}
System.out.println((char)42);
}
}