In dit programma leer je controleren of een bepaald nummer een Armstrong-nummer is of niet. U leert dit te doen door een for-lus en een while-lus in Java te gebruiken.
Om dit voorbeeld te begrijpen, moet u kennis hebben van de volgende Java-programmeeronderwerpen:
- Java while en do … while Loop
- Java if… else-instructie
- Java voor Loop
Een positief geheel getal wordt een Armstrong-getal van de orde n als genoemd
abcd … = een n + b n + c n + d n + …
In het geval van een Armstrong-nummer van 3 cijfers, is de som van de kubussen van elk cijfer gelijk aan het nummer zelf. Bijvoorbeeld:
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 is een Armstrong-getal.
Voorbeeld 1: Controleer Armstrong-nummer voor een 3-cijferig 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."); ) )
Uitvoer
371 is een Armstrong-nummer.
- Eerst wordt de waarde van het gegeven getal (getal) opgeslagen in een andere integer-variabele, originalNumber. Dit komt omdat we de waarden van het laatste nummer en het originele nummer aan het einde moeten vergelijken.
- Vervolgens wordt een while-lus gebruikt om door originalNumber te lopen totdat deze gelijk is aan 0.
- Bij elke iteratie wordt het laatste cijfer van num opgeslagen in de rest.
- Vervolgens wordt de rest aangedreven door 3 (aantal cijfers) met behulp van de
Math.pow()
functie en toegevoegd aan het resultaat. - Vervolgens wordt het laatste cijfer verwijderd uit originalNumber na deling door 10.
- Ten slotte worden resultaat en aantal vergeleken. Als het gelijk is, is het een Armstrong-nummer. Zo niet, dan is het dat niet.
Voorbeeld 2: Controleer het Armstrong-nummer op n cijfers
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."); ) )
Uitvoer
1634 is een Armstrong-nummer.
In dit programma hebben we in plaats van while-lus twee for-loops gebruikt.
De eerste for-lus wordt gebruikt om het aantal cijfers in het nummer te tellen. Het is de gecondenseerde vorm van:
voor (; originalNumber! = 0; originalNumber / = 10) (n ++;)
De tweede for-lus berekent vervolgens het resultaat waarbij bij elke iteratie de rest wordt aangedreven door het aantal cijfers n.
Bezoek deze pagina om te zien hoe u alle Armstrong-getallen tussen twee intervallen kunt weergeven.