优化这段代码 int num, sum, temp; System.out.println("水仙花数有:"); for (int i = 100; i < 102; i++) { num = i; sum = 0; while (num > 0) { temp = num % 10; sum += temp * temp * temp; num /= 10; System.out.print(num+" "); } if (sum == i) { System.out.print(i + " "); } }
时间: 2024-01-12 11:05:45 浏览: 55
这段代码可以进行以下几个优化:
1. 将循环起始点从100改为1000,因为水仙花数是三位数,循环起始点应该从1000开始。
2. 将循环结束点从102改为1000,因为水仙花数是三位数,循环结束点应该为1000。
3. 在内部循环中,将计算立方和的部分提取出来,可以使用Math.pow()方法来计算,避免重复计算。
4. 在内部循环中,将num /= 10;这一行代码放在计算立方和的部分之后,避免计算错误。
下面是优化后的代码:
```java
int num, sum, temp;
System.out.println("水仙花数有:");
for (int i = 1000; i < 10000; i++) {
num = i;
sum = 0;
while (num > 0) {
temp = num % 10;
sum += Math.pow(temp, 3);
num /= 10;
}
if (sum == i) {
System.out.print(i + " ");
}
}
```
这样,代码的效率和可读性都得到了一定的提高。
相关问题
优化代码int num, sum, temp; System.out.println("水仙花数有:"); for (int i = 100; i < 1000; i++) { num = i; sum = 0; while (num > 0) { temp = num % 10; sum += temp * temp * temp; num /= 10; System.out.print(num+" "); } if (sum == i) { System.out.print(i + " "); } }
这段代码可以进行以下几个优化:
1. 将循环起始点从100改为1000,因为水仙花数是三位数,循环起始点应该从1000开始。
2. 将循环结束点从1000改为999,避免重复计算四位数。
3. 在内部循环中,将计算立方和的部分提取出来,可以使用Math.pow()方法来计算,避免重复计算。
4. 在内部循环中,将System.out.print(num+" ");这一行代码删除,因为它没有任何作用。
下面是优化后的代码:
```java
int num, sum, temp;
System.out.println("水仙花数有:");
for (int i = 1000; i < 10000; i++) {
num = i;
sum = 0;
while (num > 0) {
temp = num % 10;
sum += Math.pow(temp, 3);
num /= 10;
}
if (sum == i) {
System.out.print(i + " ");
}
}
```
这样,代码的效率和可读性都得到了一定的提高。
用java判断1-1000之间有多少个水仙花数,并输出所有水仙花数。水仙花数:每个位置上的数字的立方之和等于这个数本身。
好的,以下是Java代码实现:
```java
public class ArmstrongNumber {
public static boolean isArmstrong(int num) {
int sum = 0;
int n = String.valueOf(num).length();
int temp = num;
while(temp != 0) {
int digit = temp % 10;
sum += Math.pow(digit, n);
temp /= 10;
}
return sum == num;
}
public static void main(String[] args) {
int count = 0;
for(int i = 1; i <= 1000; i++) {
if(isArmstrong(i)) {
count++;
System.out.println(i);
}
}
System.out.println("1-1000之间共有" + count + "个水仙花数。");
}
}
```
输出结果:
```
1
2
3
4
5
6
7
8
9
153
370
371
407
1-1000之间共有13个水仙花数。
```
该代码通过 `isArmstrong` 方法判断一个数是否为水仙花数,然后遍历1-1000之间的所有数,统计水仙花数的个数并输出这些数。