水仙花数
水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:13+53+33=153)
题目:编写Java程序打印出所有的水仙花数
分析:水仙花数是一个三位数,对三位数n取余(n%10),可以得到这个数的个位上数字k,对这个数字进行除法操作(n/10),可以得到一个两位数,也就是三位数的前两位,继续对这个数取余,可以得到三位数的十位上的数,同理,进行循环操作可以得到百位上的数字,对三个数字进行3次幂的累加。
循环操作的具体代码如下:
while(n!=0){ k=n%10; 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%10;
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%10;
b=(i/10)%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!