Java 程序:检查阿姆斯特朗数字
原文:https://www.studytonight.com/java-programs/java-program-to-check-armstrong-number
在本教程中,我们将学习如何检查数字是否是阿姆斯特朗。
如果每一个数字的 n 次方的和等于数字本身,那么 n 位数就被称为阿姆斯特朗数。例如,如果一个 3 位数的立方之和等于该数本身,则称该数为阿姆斯特朗数。
但是在继续之前,如果你不熟悉 java 中循环的概念,那么一定要查看关于 Java 中循环的文章
输入:输入数字:153
输出:是的,输入的数字 153 是阿姆斯特朗数字。
Java 程序:检查阿姆斯特朗数字
在这个节目中,我们将看到如何找到一个数字是否是阿姆斯特朗。
算法:
开始
创建 Scanner 类的实例。
声明一个变量。
要求用户初始化数字。
定义 3 种方法,一种是检查阿姆斯特朗,另一种是计算顺序,还有一种是计算升至幂的值。
使用 while 循环计算 order 函数中的总位数。
计算升至幂阶值的位数。
在 isArmstrong 方法中,检查输入的数字是否是阿姆斯特朗。
如果找到了阿姆斯特朗,那就还真否则就还假。
如果为真,则打印一条消息,说明输入的数字是阿姆斯特朗。
如果为假,则打印一条消息,说明输入的数字不是阿姆斯特朗数字。
显示消息。
停下来。
下面是检查阿姆斯特朗号的 Java 代码。
//Java Program to check Armstrong Number
import java.util.*;
public class checkArmstrong
{
int pow(int x, long y)
{
if( y == 0)
return 1;
if (y%2 == 0)
return pow(x, y/2)*pow(x, y/2);
return x*pow(x, y/2)*pow(x, y/2);
}
int order(int num)
{
int n = 0;
while (num != 0)
{
n++;
num = num/10;
}
return n;
}
boolean isArmstrong (int num)
{
// Calling order function
int n = order(num);
int temp=num, sum=0;
while (temp!=0)
{
int r = temp%10;
sum = sum + pow(r,n);
temp = temp/10;
}
// If satisfies Armstrong condition
return (sum == num);
}
// Driver Program
public static void main(String[] args)
{
//Take input from the user
//Create an instance of the Scanner class
Scanner sc=new Scanner(System.in);
System.out.println("Enter the number ");
int num = sc.nextInt();
checkArmstrong obj = new checkArmstrong();
if(obj.isArmstrong(num))
{
System.out.println("Yes "+num+" is an Armstrong number");
}
else
{
System.out.println(num+" is not an Armstrong number");
}
}
}
输入数字 1634 是的,1634 是阿姆斯特朗数字
程序 2:用 Java 检查阿姆斯特朗号
在这个程序中,我们将看到如何找到 0 到 1000 之间的阿姆斯特朗数。
算法:
开始
创建 Scanner 类的实例。
为该范围声明两个变量。
要求用户初始化范围。
声明另外三个变量来存储原始数字、总和和数字。
使用 for 循环迭代该范围内的所有元素。
将 temp 变量初始化为循环变量。
将总和初始化为 0。
求每个数字的立方之和。
检查总和是否等于原始数字。
如果相等,那么这个数字就是阿姆斯特朗。
如果不相等,那么这个数字就不是阿姆斯特朗。
显示所有阿姆斯特朗的数字。
停止
下面是检查阿姆斯特朗号的 Java 代码。
//Java Program to print all the Armstrong Number from 0 to 1000
import java.util.*;
public class Main
{
public static void main(String []args)
{
//Take input from the user
//Create an instance of the Scanner class
Scanner sc=new Scanner(System.in);
System.out.println("Enter the starting range: ");
int num1=sc.nextInt();
System.out.println("Enter the ending range: ");
int num2=sc.nextInt();
int temp, digit, sum;
for (int i = num1; i < num2; i++) {
temp = i;
sum = 0;
while (temp != 0)
{
digit = temp % 10;
sum = sum + digit * digit * digit;
temp /= 10;
}
if (sum == i)
System.out.println(i + " is an Armstrong Number");
}
}
}
输入起始范围:0 输入结束范围:1000 0 是阿姆斯特朗号 1 是阿姆斯特朗号 153 是阿姆斯特朗号 370 是阿姆斯特朗号 371 是阿姆斯特朗号 407 是阿姆斯特朗号