Algorithm JAVA写算法 水仙花数
来源:互联网 发布:java 命令行参数 d 编辑:程序博客网 时间:2024/05/18 02:49
Algorithm JAVA写算法 水仙花数
有一种三位数,这种数的 个位数的立方+十位数的立方+百位数的立方 正好等于这个数
例如
153 = 1*1*1 + 5*5*5 + 3*3*3
这种特殊的数字叫做水仙花数
那么问题来了,算出100~999中所有的水仙花数
老规矩,先写个输出方法
//输出 private static void print(Object s) { System.out.print(s.toString() + "\n"); }
第一种方法:拼接法
首先想到的是要定义三个int,分别是i,j,k,第一个数i要有个1~9的for循环
因为一定是3位数,所以i的范围是1~9
而j和k的范围是0~9,因为个位和十位可以为0
那么仔细一想就是三层嵌套for循环
完整代码
package algorithm;/** * Created by zhaoyong on 2016/5/19. * 水仙花数 * 有一种三位数,这种数的 个位数的立方+十位数的立方+百位数的立方 正好等于这个数 * 例如: * 153 = 1*1*1 + 5*5*5 + 3*3*3 * 这种特殊的数字叫做水仙花数 * 那么问题来了,算出100~999中所有的水仙花数 */public class shuiXianHuaShu { public static void main(String[] args) { //代码执行开始时间 long startTime = System.currentTimeMillis(); int i, j, k; for (i = 1; i <= 9; i++) { for (j = 0; j <= 9; j++) { for (k = 0; k <= 9; k++) { if (i * 100 + j * 10 + k == (i * i * i) + (j * j * j) + (k * k * k)) { print((i * 100 + j * 10 + k) + " = " + i + "*" + i + "*" + i + "+" + j + "*" + j + "*" + j + "+" + k + "*" + k + "*" + k); } } } } //代码执行开始时间 long endTime = System.currentTimeMillis(); print("程序运行时间:" + (endTime - startTime) + "ms"); } //输出 private static void print(Object s) { System.out.print(s.toString() + "\n"); }}
输出结果
153 = 1*1*1+5*5*5+3*3*3370 = 3*3*3+7*7*7+0*0*0371 = 3*3*3+7*7*7+1*1*1407 = 4*4*4+0*0*0+7*7*7程序运行时间:0msProcess finished with exit code 0
第二种方法:拆分法
拆分法就是先定义一个x,这个x是一个三位数,范围是100~999。然后分别获取第一个,第二个,第三个数。然后做判断,判断是否满足水仙花数条件。那么这样,只需要一个for循环+一个if判断即可
代码示例
private static void chaiFen() { print("拆分法:"); //代码执行开始时间 long startTime = System.currentTimeMillis(); int x, i, j, k; for (x = 100; x <= 999; x++) { i = x / 100;//百位数 j = x / 10 % 10;//十位数 k = x % 10;//个位数 if (x == (i * i * i) + (j * j * j) + (k * k * k)) { print(x + " = " + i + "*" + i + "*" + i + "+" + j + "*" + j + "*" + j + "+" + k + "*" + k + "*" + k); } } //代码执行开始时间 long endTime = System.currentTimeMillis(); print("程序运行时间:" + (endTime - startTime) + "ms"); }
两种方法的完整代码
package algorithm;/** * Created by zhaoyong on 2016/5/19. * 水仙花数 * 有一种三位数,这种数的 个位数的立方+十位数的立方+百位数的立方 正好等于这个数 * 例如: * 153 = 1*1*1 + 5*5*5 + 3*3*3 * 这种特殊的数字叫做水仙花数 * 那么问题来了,算出100~999中所有的水仙花数 */public class shuiXianHuaShu { public static void main(String[] args) { pinJie(); chaiFen(); } private static void pinJie() { print("拼接法:"); //代码执行开始时间 long startTime = System.currentTimeMillis(); int i, j, k; for (i = 1; i <= 9; i++) { for (j = 0; j <= 9; j++) { for (k = 0; k <= 9; k++) { if (i * 100 + j * 10 + k == (i * i * i) + (j * j * j) + (k * k * k)) { print((i * 100 + j * 10 + k) + " = " + i + "*" + i + "*" + i + "+" + j + "*" + j + "*" + j + "+" + k + "*" + k + "*" + k); } } } } //代码执行开始时间 long endTime = System.currentTimeMillis(); print("程序运行时间:" + (endTime - startTime) + "ms"); } private static void chaiFen() { print("拆分法:"); //代码执行开始时间 long startTime = System.currentTimeMillis(); int x, i, j, k; for (x = 100; x <= 999; x++) { i = x / 100;//百位数 j = x / 10 % 10;//十位数 k = x % 10;//个位数 if (x == (i * i * i) + (j * j * j) + (k * k * k)) { print(x + " = " + i + "*" + i + "*" + i + "+" + j + "*" + j + "*" + j + "+" + k + "*" + k + "*" + k); } } //代码执行开始时间 long endTime = System.currentTimeMillis(); print("程序运行时间:" + (endTime - startTime) + "ms"); } //输出 private static void print(Object s) { System.out.print(s.toString() + "\n"); }}
输出结果
拼接法:153 = 1*1*1+5*5*5+3*3*3370 = 3*3*3+7*7*7+0*0*0371 = 3*3*3+7*7*7+1*1*1407 = 4*4*4+0*0*0+7*7*7程序运行时间:0ms拆分法:153 = 1*1*1+5*5*5+3*3*3370 = 3*3*3+7*7*7+0*0*0371 = 3*3*3+7*7*7+1*1*1407 = 4*4*4+0*0*0+7*7*7程序运行时间:0msProcess finished with exit code 0
1 0
- Algorithm JAVA写算法 水仙花数
- JAVA水仙花数算法
- java算法--水仙花数
- java实现水仙花数算法
- Java算法之“水仙花数”
- java 计算 水仙花 花朵数 算法 优化
- 求水仙花数简单算法java
- java经典算法_003水仙花数
- java算法——打印水仙花数
- java中经典算法之一:水仙花数
- java经典算法3_水仙花数
- java基础算法之水仙花数
- java小算法—求水仙花数
- 水仙花数的java算法实现
- Algorithm JAVA写算法 验证哥德巴赫猜想
- 水仙花数算法
- 趣味算法-水仙花数
- 算法应用-水仙花数
- java 通过jdbc连接oracle集群
- 着色器文件中的 Properties 定义
- leetcode 10 Regular Expression Matching
- 电脑天梯图
- UML
- Algorithm JAVA写算法 水仙花数
- 关于block使用的5点注意事项
- 第12周项目1--实现复数类中的运算重载(1)
- 基础总结篇之一:Activity生命周期
- 二叉树
- 集合的理解
- ibatis动态获取执行SQL和参数
- 将博客搬至CSDN
- vb