Kotlin-programmet for å sjekke Armstrong-nummeret

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 til Doublefordi powbare aksepterer Doubleparametere, 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.

Interessante artikler...