In dit programma leer je controleren of een bepaald nummer een Armstrong-nummer is of niet. Je leert dit door een while-lus in Kotlin te gebruiken.
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
fun main(args: Array) ( val number = 371 var originalNumber: Int var remainder: Int var result = 0 originalNumber = number while (originalNumber != 0) ( remainder = originalNumber % 10 result += Math.pow(remainder.toDouble(), 3.0).toInt() originalNumber /= 10 ) if (result == number) println("$number is an Armstrong number.") else println("$number is not an Armstrong number.") )
Wanneer u het programma uitvoert, is de 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.
Hier wordt de rest geconverteerd naarDouble
omdatpow
alleenDouble
parameters worden geaccepteerd , en de waarde wordt weer geconverteerd naarInt
- 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 armstronggetal. Zo niet, dan is het dat niet.
Hier is de equivalente Java-code: Java-programma om Armstrong-nummer te controleren
Voorbeeld 2: Controleer het Armstrong-nummer op n cijfers
fun main(args: Array) ( val number = 1634 var originalNumber: Int var remainder: Int var result = 0 var n = 0 originalNumber = number while (originalNumber != 0) ( originalNumber /= 10 ++n ) originalNumber = number while (originalNumber != 0) ( remainder = originalNumber % 10 result += Math.pow(remainder.toDouble(), n.toDouble()).toInt() originalNumber /= 10 ) if (result == number) println("$number is an Armstrong number.") else println("$number is not an Armstrong number.") )
In dit programma hebben we twee while-loops gebruikt. De eerste while-lus wordt gebruikt om het aantal cijfers in het nummer te tellen.
Vervolgens wordt originalNumber hersteld naar het opgegeven nummer.
De tweede while-lus controleert vervolgens of het nummer armstrong is of niet.
Bezoek deze pagina om te zien hoe u alle Armstrong-getallen tussen twee intervallen kunt weergeven.