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 while-loop i Kotlin.
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
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.") )
Når du kører programmet, vil output være:
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.
Her konverteres resten til,Double
fordi detpow
kun acceptererDouble
parametre, og dets værdi konverteres igen tilInt
- Derefter fjernes det sidste ciffer fra originalNummer efter division med 10.
- Endelig sammenlignes resultat og antal. Hvis det er lige, er det et armstrongt tal. Hvis ikke, er det ikke tilfældet.
Her er den tilsvarende Java-kode: Java-program til kontrol af Armstrong-nummer
Eksempel 2: Kontroller Armstrong-nummeret for n cifre
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.") )
I dette program har vi brugt to mens sløjfer. Den første while-loop bruges til at tælle antallet af cifre i nummeret.
Derefter gendannes originalNumber til det givne nummer.
Den anden while-loop kontrollerer derefter, om antallet er armstrong eller ej.
Besøg denne side for at lære, hvordan du kan vise alle armstrong tal mellem to intervaller.