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

标签 java

这里我编写了代码来打印阿姆斯特朗数字直到某个特定范围。但该程序不会打印该范围内的所有数字。它只打印 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/

相关文章:

java - Spring应用程序上下文在ApplicationContextAware类中为空

java - View.getEntryCount()返回1500,但无法通过key获取任何文档?

java - Java 定时器的问题

java - 为什么在 TreeSet 的 last-method 中实证结果与理论数据不同?

Java RMI 新手在使用基本的 hello world 应用程序时遇到困难

java - Web 应用程序上的错误 406

java - 我的插入排序的实现

java - Android中的回调是什么?

java - 在 Tomcat7 上部署 webapp

java - 如何创建新注释?