/* 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位 数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方 +5的三次方+3的三次方 由于100 200 300 500 400 整百数都不是水仙花可以直接排除 而且 101 为基数的也不是水仙花可以直接排除 这样排除这两个规律的直接跳过计算 */ public class Narcissus { /* 开始运行时间1524629170834 153 370 371 407 结束运行时间1524629170838 耗时:4 因为有18个跳过计算立方的方法避免了计算步骤的冗余所以运行更快了 */ public void printNarcissus() { for (int i = 102; i < 999; i++) { if (i % 100 == 0 || i % 101 == 0) continue; int j = i / 100, k = i / 10 % 10, z = i % 10; if (i == Math.pow(j, 3) + Math.pow(k, 3) + Math.pow(z, 3)) System.out.println(i); } } /** * 传统算法运行结果 * <p> * 开始运行时间1524629049929 * 水仙花数是:153 * 水仙花数是:370 * 水仙花数是:371 * 水仙花数是:407 * 结束运行时间1524629049949 * 耗时:21 */ public void ss() { for (int number = 100; number <= 999; number++) { int gewei = number % 10; int shiwei = number / 10 % 10; int baiwei = number / 100 % 10; if (gewei * gewei * gewei + shiwei * shiwei * shiwei + baiwei * baiwei * baiwei == number) { System.out.println("水仙花数是:" + number); } } } }
Java计算三位数水仙花的实现以及优化方式
猜你喜欢
转载自blog.csdn.net/qq_29856589/article/details/80077437
今日推荐
周排行