I dette program lærer du at kontrollere, om et givet nummer er armstrong nummer eller ej. Du lærer at gøre dette ved at bruge en for-loop og en while-loop i Java.
For at forstå dette eksempel skal du have kendskab til følgende Java-programmeringsemner:
- Java mens og gør … mens Loop
- Java hvis … ellers Erklæring
- Java til Loop
Et positivt heltal kaldes et Armstrong antal af rækkefølge n hvis
abcd… = a n + b n + c n + d n +…
I tilfælde af et Armstrong-antal på 3 cifre er summen af terninger af hvert ciffer lig med selve antallet. For eksempel:
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 er et Armstrong-tal.
Eksempel 1: Kontroller Armstrong-nummer for 3-cifret nummer
public class Armstrong ( public static void main(String() args) ( int number = 371, originalNumber, remainder, result = 0; originalNumber = number; while (originalNumber != 0) ( remainder = originalNumber % 10; result += Math.pow(remainder, 3); originalNumber /= 10; ) if(result == number) System.out.println(number + " is an Armstrong number."); else System.out.println(number + " is not an Armstrong number."); ) )
Produktion
371 er et Armstrong-nummer.
- For det første gemmes det givne tal (tal) i en anden heltalsvariabel, originalNumber. Dette er fordi, vi er nødt til at sammenligne værdierne for det endelige tal og det originale nummer i slutningen.
- Derefter bruges en while-løkke til at løbe gennem originalNumber, indtil den er lig med 0.
- På hver iteration gemmes det sidste ciffer i antal i resten.
- Derefter styres resten af 3 (antal cifre) ved hjælp af
Math.pow()
funktionen og tilføjes til resultatet. - Derefter fjernes det sidste ciffer fra originalNummer efter division med 10.
- Endelig sammenlignes resultat og antal. Hvis det er lige, er det et Armstrong-tal. Hvis ikke, er det ikke tilfældet.
Eksempel 2: Kontroller Armstrong-nummeret for n cifre
public class Armstrong ( public static void main(String() args) ( int number = 1634, originalNumber, remainder, result = 0, n = 0; originalNumber = number; for (;originalNumber != 0; originalNumber /= 10, ++n); originalNumber = number; for (;originalNumber != 0; originalNumber /= 10) ( remainder = originalNumber % 10; result += Math.pow(remainder, n); ) if(result == number) System.out.println(number + " is an Armstrong number."); else System.out.println(number + " is not an Armstrong number."); ) )
Produktion
1634 er et Armstrong-nummer.
I dette program har vi brugt to til sløjfer i stedet for at bruge mens løkke.
Den første for loop bruges til at tælle antallet af cifre i nummeret. Det er den kondenserede form for:
for (; originalNumber! = 0; originalNumber / = 10) (n ++;)
Den anden for loop beregner derefter resultatet, hvor resten af hver iteration, resten er drevet af antallet af cifre n.
Besøg denne side for at lære, hvordan du kan vise alle armstrong tal mellem to intervaller.