Armstrong nummerprogram i Java
I de tidligere indlæg har vi udviklet mange Java-programmer baseret på tallene. Nu i dette indlæg vil vi udvikle Armstrongs nummerprogram i Java. Først vil vi udvikle et java-program til at kontrollere et Armstrong-nummer, og derefter vil vi udvikle et java-program til et Armstrong-nummer mellem 1 og 1000.
Et positivt heltal kaldes Armstrong nummer af orden n if , abcd…. = a n + b n + c n + d n + ….
For eksempel:- 153
1
3
+ 5
3
+ 3
3
=1 + 125 + 27 =153
Så 153 er et Armstrong-tal af orden 3.
4150 = 4
5
+ 1
5
+ 5
5
+ 0
5
=1.024 + 1 + 3.125 + 0 =4150
Så 4150 er et Armstrong-tal af orden 5
Procedure for at kontrollere Armstrong-nummeret på ordre N
1) Tag en variabel og tag en ordre for at kontrollere
2) Angiv variabler lastDigit
, power
og sum
Initialiser sum med 0
3) Tag en midlertidig variabel n
for at gemme numre
4) Find det sidste ciffer i n
5) Beregn styrken af den lastDigit
med ordre dvs. pow(lastDigit, order)
6) Tilføj resultatet til sum
7) Fjern det sidste ciffer
8) Gentag trin 4 til 7, indtil tallet bliver 0
9) Sammenlign sumværdi og det faktiske tal
==> Hvis begge er det samme er det Armstrong-nummeret for den givne ordre
==> Ellers er det ikke Armstrong-nummeret for den givne ordre
Java-metode til at kontrollere Armstrong-nummeret på ordre N
public static boolean isArmstrong(int number, int order){
// declare variables
int lastDigit = 0;
int power = 0;
int sum = 0;
// temporary variable to store number
int n = number;
while(n!=0) {
// find last digit
lastDigit = n % 10;
// find power of digit
power = (int) Math.pow(lastDigit, order);
// add power value into sum
sum += power;
// remove last digit
n /= 10;
}
if(sum == number) return true;
else return false;
}
I denne metode til at finde kraften tager vi støtte fra pow()
, som er defineret i matematikklassen. pow()
er en statisk metode, så vi kan kalde den uden at oprette et objekt af Math-klassen, og den returnerer dobbelt, så vi skal bruge type til at caste det til int-type. I stedet for at bruge den foruddefinerede pow()
metode i matematikklassen, kan du også bruge din egen metode til at finde styrken af et tal.
Se også:- Specialnummer, Magisk nummer, Armstrong-nummer, Perfekt nummer, Evil Number, Spionnummer, Sunny-nummer i Java
Java-program
Baseret på ovenstående isArmstrong(-,-)
metode vil vi skrive et java-program for at kontrollere Armstrong-nummeret for ordre N.
import java.util.Scanner;
public class ArmstrongNumber {
public static boolean isArmstrong(int number, int order){
// declare variables
int lastDigit = 0;
int power = 0;
int sum = 0;
// temporary variable to store number
int n = number;
while(n!=0) {
// find last digit
lastDigit = n % 10;
// find power of digit
power = (int) Math.pow(lastDigit, order);
// add power value into sum
sum += power;
// remove last digit
n /= 10;
}
if(sum == number) return true;
else return false;
}
public static void main(String[] args) {
// declare variables
int number = 0;
int order = 0;
// create Scanner class object
Scanner scan = new Scanner(System.in);
// take input
System.out.print("Enter integer number::");
number = scan.nextInt();
System.out.print("Enter order to check::");
order = scan.nextInt();
//check number is Armstrong number or not
if(isArmstrong(number, order))
System.out.println( number +" is "
+"Armstrong number of order "+ order);
else
System.out.println( number +" is not "
+"Armstrong number of order "+ order);
// close Scanner class object
scan.close();
}
}
Output for forskellige test-cases:-
Indtast et heltal::153
Indtast en ordre for at kontrollere::3
153 er Armstrong-nummeret for ordre 3
Indtast et heltal::153
Indtast en ordre for at kontrollere::5
153 er ikke Armstrong-nummeret for ordre 5
Indtast et heltal::4150
Indtast en ordre for at kontrollere::3
4150 er ikke Armstrong-nummeret for ordre 3
Indtast et heltal::4150
Indtast en ordre for at kontrollere::5
4150 er Armstrong-nummeret for ordre 5
Java-program for Armstrong nummer mellem 1 og 1000
Vi kan også finde alle Armstrong-numre i en given rækkefølge i det givne interval. Til dette formål skal vi tage minimums- og maksimumværdierne for rækkevidden og rækkefølgen for at kontrollere Armstrong-tallet.
import java.util.Scanner;
public class ArmstrongNumberInRange {
public static boolean isArmstrong(int number, int order){
// declare variables
int lastDigit = 0;
int power = 0;
int sum = 0;
// temporary variable to store number
int n = number;
while(n!=0) {
// find last digit
lastDigit = n % 10;
// find power of digit
power = (int) Math.pow(lastDigit, order);
// add power value into sum
sum += power;
// remove last digit
n /= 10;
}
if(sum == number) return true;
else return false;
}
public static void main(String[] args) {
// declare variables
int minRange , maxRange;
int order = 0;
// create Scanner class object
Scanner scan = new Scanner(System.in);
// read inputs
System.out.print("Enter min & max "+
"Range value:: ");
minRange = scan.nextInt();
maxRange = scan.nextInt();
System.out.print("Enter order to check::");
order = scan.nextInt();
// check in range
System.out.println("Armstrong numbers"+
" from "+minRange+" to "+maxRange+
" of order " +order+" is:: ");
for(int i = minRange; i<= maxRange; i++)
if(isArmstrong(i, order))
System.out.print( i + " ");
// close Scanner class object
scan.close();
}
}
Output for forskellige test-cases:-
Indtast min og maks. områdeværdi::1 1000
Indtast en ordre for at kontrollere::3
Armstrong-tal fra 1 til 1000 af ordre 3 er::1 153 370 371 407
Indtast min og maks. områdeværdi::1 10000
Indtast en ordre for at kontrollere::5
Armstrong-tal fra 1 til 10000 af ordre 5 er::1 4150 4151