菜鸟笔记
提升您的技术认知

Java 水仙花数

水仙花数

水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 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;
  		}
  1. do-while循环遍历输入100~999的数
  2. while循环对三个数进行3次幂之和
  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!