Java 计算阿姆斯特朗数

什么是阿姆斯特朗数?

如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。

例如1^3 + 5^3 + 3^3 = 153

当n=3时,又称水仙花数,特指一种三位数,其各个数之立方和等于该数。

水仙花数共有4个,分别为:153、370、371、407。

如果是 4 位的阿姆斯特朗数的计算方法。

Java 实现

可以用下面的 Java 代码来进行实现,实现的过程也非常简单,只需要对数字进行拆分就好了。

package edu.nec.course.week4.homework;

import java.util.Scanner;

public class ArmstrongNumber {

    public static void main(String args[]) {

        System.out.print("Enter starting integer: ");

        Scanner keyb = new Scanner(System.in);
        int n = keyb.nextInt();
        keyb.close();

        int y, c = 0, d = 0;
        int x = n;

        while (x > 0) {

            // modulus gives right-most digit
            y = x % 10;
            // divide gives remaining left digits
            x = x / 10;

            // tracking number of digits in number
            d++;

            System.out.println("digit is : " + y);

            //logic to calculate total of cubes of digit
            c = c + (y * y * y);

        }

        System.out.println("Total positive digits: " + d);
        System.out.println("Total sum is: " + c);

        //logic to determine if Armstrong Number
        if (c == n) {
            System.out.println(n + " IS an armstrong number");

        } else {

            System.out.println(n + " is NOT an armstrong number");
        }


    }

}

扩展

从上面的代码上,我们可以看到我们是如何对数字进行计算的。

首先把数字进行拆分,获得一个一个的数字,然后对获得数字单独进行计算,最后求和判断数字是否相等。

这里还有其他的解决方案,就是可以把给出的数字进行拆分成字符串,这个时候我们可以用到 Java 中的字符串拆分函数即可。