编程1.3

  • ?:你知道什么是"水仙花数 "吗?听说是指一个三位数,其各位数字立方和等于该数本身。比如153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。你能打印出所有的水仙花数吗?
  • ?:花里胡哨,其实就一个for循环的事…
import org.junit.Test;

public class narcissusNumber {

	@Test
	public void printNarcissus() {
		System.out.println("三位数的水仙花数有: ");
		for (int i = 100; i < 1000; i++) {
			if (i == numberSum(i)) {
				System.out.print(i + " ");
			}
		}
	}

	public int numberSum(int num) {
		String s = String.valueOf(num);
		int h = s.charAt(0) - 48; // 0的ASCII码是48
		int t = s.charAt(1) - 48;
		int z = s.charAt(2) - 48;
		int sum = (int) (Math.pow(t, 3) + Math.pow(h, 3) + Math.pow(z, 3));
		return sum;
	}
}

结果:
在这里插入图片描述

  • 另外,水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。

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

  • ?:那怎么求自幂数?

  • ?:也不难吧,只是再多加一个条件判定罢了

import org.junit.Test;

public class selfNumber {

	// 因为是int类型,只能计算1位到9位数哟
	public void printSelfNumber(int len) {
		int min = (int) (Math.pow(10, len - 1));
		int max = (int) (Math.pow(10, len)) - 1;
		for (int i = min; i <= max; i++) {
			if (i == numberSum(i)) {
				System.out.println(i);
			}
		}

	}

	public int numberSum(int num) {
		String s = String.valueOf(num);
		int sum = 0;
		for (int i = 0; i < s.length(); i++) {
			sum += (int) (Math.pow(s.charAt(i) - 48, s.length()));
		}
		return sum;
	}

	@Test
	public void test() {

		printSelfNumber(3);
		printSelfNumber(4);
	}

}

在这里插入图片描述

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值