【蓝桥杯】基础练习 特殊的数字(Java实现)(水仙花数)

博客介绍了如何用Java实现检查三位数是否为水仙花数,提供了两种方法,并阐述了数字拆分的一般方法。此外,还解释了水仙花数的概念及不同位数的自幂数名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述分析:
只需要枚举所有的三位整数,将它们的三位分别分离出来,然后计算立方和,判断与原数是否相同即可。

Java代码实现:

方法一:

public class Main {
	public static void main(String[] args) {
		int g,s,b;
		for(int i=100;i<1000;i++){
			g=i/1%10;//个位数字
			s=i/10%10;//十位数字
			b=i/100%10;//百位数字
			if(g*g*g+s*s*s+b*b*b==i){
				System.out.println(i);
			}
		}
	}    
}

这种方法虽然简单易懂,但是并没有使用到Java 的特性。下面的代码是使用了Java的Math函数的。

方法二:

public class Main {
		public static void main(String[] args) {
		int a[] = new int[3];
		for(int num = 100; num < 1000; num ++) {
			int sum = 0;
			a[0] = num / 100 % 10;		//百位数字
			a[1] = num / 10 % 10;		//十位数字
			a[2] = num / 1 % 10;		//个位数字
			
			//对已经拆分出来的各位数字的立方求和
			for (int i = 0; i < 3; i++) {
				sum += (int) Math.pow(a[i], 3);
			}
			//打印出符合条件的数字
			if (num == sum) {
				System.out.println(num);
			} 
		}
	}
}

代码中的Math.pow(base, exponent) 函数返回基数(base)的指数(exponent)次幂,即 baseexponent
在这里插入图片描述
通过查看API文档我们发现,poew()函数的返回值类型是static double。
由于 pow 是 Math 的静态方法,所以应该像这样使用:Math.pow(),而不是创建的 Math 对象的方法。
另外我们定义的sum是int型整数,所以要将Math.pow()的返回值强转为int型。

总结:

观察代码段

		g=i/1%10;//个位数字
  		s=i/10%10;//十位数字
  		b=i/100%10;//百位数字

我们不难推出将一个整数i的各位拆分的一般方法:
x 位上的数 =i / 10x % 10
当x为个位时 x = 0,当x为十位时 x = 1,当x为百位时 x = 2…………
依此类推。
以上内容是我自己总结出来的,表述可能不是很严谨或者规范,欢迎大家指正!

拓展:

其实题目中所描述的这样“特殊的数字 ”,有一个专有的名称叫“水仙花数”。
定义:
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数等等。水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。

附:其他位数的自幂数名字
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

常见水仙花数
三位的水仙花数共有4个:153,370,371,407;
四位的四叶玫瑰数共有3个:1634,8208,9474;
五位的五角星数共有3个:54748,92727,93084;
六位的六合数只有1个:548834;
七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;
八位的八仙数共有3个:24678050,24678051,88593477
…………

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值