`
yujianlong1988
  • 浏览: 6987 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

令解水仙花数(个人扩展想象,写活一些)

 
阅读更多
题目:打印出所有的  "水仙花数  ",所谓  "水仙花数  "是指一个三位数,其各位数字立方和
等于该数本身。例如:153 是一个  "水仙花数  ",因为 153=1 的三次方+5 的三次方+3 的
三次方。
(扩展:水仙花是三位数或者更多位数,例如54748就是各位数的5次方相加的和)


@Test
	public void testshuixianhua2() {

		int num1, num2, num3;

		for (int i = 101; i < 100000; i++) {
			String temp = String.valueOf(i);
			int lenth = temp.length();
			char[] temp01 = temp.toCharArray();
			int sum = 0;
			for (int j = 0; j < lenth; j++) {
				num1 = Integer.parseInt(String.valueOf(temp01[j]));
				sum += Math.pow(num1, lenth);
			}
			if (sum == i) {
				System.err.println("水仙花数" + "=" + sum);

			}

		}

	}



打印:
水仙花数=153
水仙花数=370
水仙花数=371
水仙花数=407
水仙花数=1634
水仙花数=8208
水仙花数=9474
水仙花数=54748
水仙花数=92727
水仙花数=93084

原始的解法是:
int num1, num2, num3;
		for (int i = 101; i < 1000; i++) {
			num1 = i / 100;
			num2 = (i / 10) % 10;
			num3 = i % 10;
			//System.err.println(num1 + "--" + num2 + "--" + num3);

			if ((double) i == Math.pow(num1, 3) + Math.pow(num2, 3) + Math.pow(num3, 3)) {
				System.err.println(i);
			}
		}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics