gpt4 book ai didi

java - 在java中查找阿姆斯特朗数

转载 作者:行者123 更新时间:2023-12-01 16:45:25 25 4
gpt4 key购买 nike

我找到了所有这些数字,但我不明白为什么在我的代码中,循环的方向决定了一切当他从 9999 到 100 时,他不会数小于 1000 的数字当循环从 100 到 9999 时,一切都会从头到尾进行......有效的代码:

public class Main {
public static void main(String[] args){
int n , po = 0, count = 0;
double arm;
int[] elems = {0,0,0,0};
for(int i = 100; i < 9999; i++){
for( n = i;n >= 1; count++){
elems[count] = n%10;
n /= 10;
po++;
}
arm = pow(elems[0],po)+pow(elems[1],po)+pow(elems[2],po)+pow(elems[3],po);
if(arm == i ){
System.out.println(i);
}
po = 0;
count = 0;
}
}
}

输出:

153
370
371
407
1634
8208
9474

以及不起作用的代码:

public class Main {
public static void main(String[] args){
int n , po = 0, count = 0;
double arm;
int[] elems = {0,0,0,0};
for(int i = 9999; i > 100; i--){
for( n = i;n >= 1; count++){
elems[count] = n%10;
n /= 10;
po++;
}
arm = pow(elems[0],po)+pow(elems[1],po)+pow(elems[2],po)+pow(elems[3],po);
if(arm == i ){
System.out.println(i);
}
po = 0;
count = 0;
}
}
}

输出:

9474
8208
1634

正如您所看到的,差异仅在于循环的方向......为什么会发生这种情况?

最佳答案

并非全部elems i < 1000 的元素被覆盖所以当 arm = pow(... 时,之前的内容仍然保留已评估。

重置 elems对于外部 for 的每次迭代-循环也是如此。

关于java - 在java中查找阿姆斯特朗数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52654171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com