水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:13 53 33=153)
题目:编写java程序打印出所有的水仙花数
分析:水仙花数是一个三位数,对三位数n取余(n),可以得到这个数的个位上数字k,对这个数字进行除法操作(n/10),可以得到一个两位数,也就是三位数的前两位,继续对这个数取余,可以得到三位数的十位上的数,同理,进行循环操作可以得到百位上的数字,对三个数字进行3次幂的累加。
循环操作的具体代码如下:
while(n!=0){ k=n; n=n/10; s=s k*k*k; }
- do-while循环遍历输入100~999的数
- while循环对三个数进行3次幂之和
- if语句判断这次循环中这个数各个位的3次幂之和是否等于这个数
完整代码如下:
public class demo{
public static void main(string[] args){
int k,n,s,i=100;
do{
s=0;
n=i;
while(n!=0){
k=n;
n=n/10;
s=s k*k*k;
}
if(i==s)
system.out.print(s " ");
i ;
}while(i<999);
}
}
运行结果:
153 370 371 407
附
判断一个数是否为水仙花数
import java.util.*;
public class shuixianhuashu{
public static void main(string[] args){
int i,a,b,c;
system.out.print("请输入一个三位数:");
scanner read=new scanner(system.in);
i=read.nextint();
a=i;
b=(i/10);
c=i/100;
if(a*a*a b*b*b c*c*c==i){
system.out.print("yes!");
}else{
system.out.print("no!");
}
}
}
运行结果:
请输入一个三位数:153
yes!