I dette programmet lærer du å sjekke om et gitt tall er armstrongtall eller ikke. Du lærer å gjøre dette ved å bruke en while-loop i Kotlin.
Et positivt heltall kalles et Armstrong antall ordre n hvis
abcd … = a n + b n + c n + d n + …
I tilfelle et Armstrong-tall på 3 sifre er summen av kubene av hvert siffer lik selve tallet. For eksempel:
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 er et Armstrong-tall.
Eksempel 1: Sjekk Armstrong Number for 3-sifret 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 kjører programmet, vil utdataene være:
371 er et Armstrong-nummer.
- Først lagres verdien (nummer) sin verdi i en annen heltallvariabel, originalNumber. Dette er fordi vi må sammenligne verdiene til det endelige nummeret og det opprinnelige tallet på slutten.
- Deretter brukes en while-løkke til å løpe gjennom originalNumber til den er lik 0.
- På hver iterasjon blir det siste sifferet på numre lagret i resten.
- Deretter blir resten drevet av 3 (antall sifre) ved hjelp av
Math.pow()
funksjonen og lagt til resultatet.
Her konverteres resten tilDouble
fordipow
bare akseptererDouble
parametere, og verdien konverteres igjen tilInt
- Deretter fjernes det siste sifferet fra originaltall etter divisjon med 10.
- Til slutt sammenlignes resultat og antall. Hvis det er likt, er det et armstrong tall. Hvis ikke, er det ikke det.
Her er ekvivalent Java-kode: Java-program for å sjekke Armstrong-nummer
Eksempel 2: Sjekk Armstrong-tallet for n sifre
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 programmet har vi brukt to mens løkker. Den første mens sløyfen brukes til å telle antall sifre i tallet.
Deretter blir originalNumber gjenopprettet til det gitte nummeret.
Den andre mens sløyfen sjekker deretter om tallet er armstrong eller ikke.
Besøk denne siden for å lære hvordan du kan vise alle armstrong tall mellom to intervaller.