水仙花数是指一个三位数,它的各个位上的数字的立方和等于该数本身。例如:153,是因为13+53+33=153。这个数在古代称为"自恋数",因为它的每一位数字立方数相加后,正好等于自身,因此自认为"最美丽、最出色"。
如何用Java写水仙花数代码
Java语言是一个功能强大的编程语言,它可以用来编写各种类型的程序。下面是一个用Java编写水仙花数的代码示例:
//定义变量int i = 0, j = 0, k = 0; //循环生成所有三位数for (i = 1; i <= 9; i++) { for (j = 0; j <= 9; j++) { for (k = 0; k <= 9; k++) { //计算立方和 int n = i * 100 + j * 10 + k; int m = i * i * i + j * j * j + k * k * k; //判断是否为水仙花数 if (n == m) { System.out.println(n); } } }}
以上代码中,我们定义了三个变量i、j和k,用于生成所有的三位数。之后我们使用for循环遍历所有的三位数,并计算它的各个位上的数字的立方和。最后判断是否与它本身相等,如果相等就输出这个数字。
如何改进水仙花数代码
以上的Java代码可以用于生成所有的水仙花数,但是如果我们只想生成1000以内的水仙花数,这个程序就会变得很慢。因此,我们需要对代码进行优化,让它更加高效。
我们可以将for循环中的i、j和k的范围缩小到0~9之间,然后再将生成的三位数与1000做比较,如果大于1000就退出循环。这样可以大大提高代码的运行效率。
//定义变量int i = 0, j = 0, k = 0; //循环生成所有三位数for (i = 0; i <= 9; i++) { for (j = 0; j <= 9; j++) { for (k = 0; k <= 9; k++) { //计算立方和 int n = i * 100 + j * 10 + k; int m = i * i * i + j * j * j + k * k * k; //判断是否为水仙花数 if (n == m && n < 1000) { System.out.println(n); } } }}
以上代码中,我们调整了i、j和k的范围,并在判断水仙花数时加入了一个小于1000的条件,避免了生成大于1000的数字。这样可以大大提高代码的运行效率。