gpt4 book ai didi

java - 阿姆斯特朗数逻辑错误

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

这里我编写了代码来打印阿姆斯特朗数字直到某个特定范围。但该程序不会打印该范围内的所有数字。它只打印 1000 范围内的阿姆斯壮数字。这段代码有什么问题?

public static void main(String[] args) {
long N, temp, sum = 0;
Scanner ip = new Scanner(System.in);
System.out.print("Enter the range: ");
N = ip.nextLong();
for (long i = 1; i < N; i++) {
temp = i;
while (temp > 0) {
long rem = temp % 10;
sum = sum + (rem * rem * rem);
temp = temp / 10;
}
if (sum == i) {
System.out.println(" " + i);
}
sum = 0;
}
ip.close();
}

当输入为 100000 时,它只打印

Enter the range: 100000
1
153
370
371
407

最佳答案

根据阿姆斯特朗数的定义,数字中的每一位数字都将被提升到n,其中 是数字中的位数。

但是您的逻辑没有实现这一点。它仅将数字提高到三次方。

这就是您的代码失败的原因。

给你,使用此代码:

for (long i = 1; i < N; i++) {
temp = i;
int n=Long.toString(i).length();
while (temp > 0) {
long rem = temp % 10;
sum = sum + (long) Math.pow(rem, n);
temp = temp / 10;
}
if (sum == i) {
System.out.println(" " + i);
}
sum = 0;
}

Ideone link here.

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

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