问题2: 打印"水仙花数 "_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 问题2: 打印"水仙花数 "

问题2: 打印"水仙花数 "

 2013/8/29 0:56:01  elihe2011  程序员俱乐部  我要评论(0)
  • 摘要:分析:水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方publicclassDaffodils{publicstaticvoidmain(String[]args){for(longn=100;n<1000;n++){if(match(n)){System.out.print(n+"\t");}}}privatestaticbooleanmatch(longn)
  • 标签:问题
分析:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方
class="java">
public class Daffodils {
	public static void main(String[] args) {
		for (long n = 100; n < 1000; n++) {
			if (match(n)) {
				System.out.print(n + "\t");
			}
		}
	}

	private static boolean match(long n) {
		// 数字位数
		int count = (n + "").length();
		// 每一位数字
		long temp = 0;
		// 辗转相除的余数,即由数字分裂得到
		long num = n;
		// 每一位数字的count次方和
		long sum = 0;
		for (int i = count; i > 0; i--) {
			temp = num / (long) Math.pow(10, i - 1);
			num = num % (long) Math.pow(10, i - 1);
			sum += (long) Math.pow(temp, count);
		}
		return sum == n;
	}
}
上一篇: 问题1:兔子问题 下一篇: 没有下一篇了!
发表评论
用户名: 匿名