水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 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!