Kotlin-ohjelma Armstrong-numeron tarkistamiseksi

Tässä ohjelmassa opit tarkistamaan, onko annettu numero itsepäinen luku vai ei. Opit tekemään tämän käyttämällä jonkin aikaa silmukkaa Kotlinissa.

Positiivista kokonaislukua kutsutaan Armstrong-luvuksi, jos n

abcd… = a n + b n + c n + d n +…

Jos kyseessä on Armstrongin 3-numeroinen numero, kunkin numeron kuutioiden summa on sama kuin itse numero. Esimerkiksi:

 153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 on Armstrongin luku. 

Esimerkki 1: Tarkista Armstrong-numerosta 3-numeroinen numero

 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.") ) 

Kun suoritat ohjelmaa, tulos on:

 371 on Armstrongin numero.
  • Ensinnäkin annetun numeron (numero) arvo tallennetaan toiseen kokonaislukumuuttujaan, originalNumber. Tämä johtuu siitä, että meidän on vertailtava lopullisen ja alkuperäisen luvun arvoja lopussa.
  • Sitten jonkin aikaa silmukkaa käytetään silmukkaamaan alkuperäisen numeron läpi, kunnes se on yhtä suuri kuin 0.
    • Kullakin iteraatiolla viimeinen numeronumero tallennetaan loppuosan.
    • Sitten loput saavat virran 3: sta (numeroiden määrä) käyttämällä Math.pow()toimintoa ja lisätään tulokseen.
      Tässä loput muunnetaan, Doublekoska powvain hyväksyy Doubleparametrit, ja sen arvo muunnetaan jälleen takaisinInt
    • Sitten viimeinen numero poistetaan alkuperäisestä numerosta jaon jälkeen 10: llä.
  • Lopuksi tulosta ja lukua verrataan. Jos se on yhtä suuri, se on itsepäinen luku. Jos ei, se ei ole.

Tässä on vastaava Java-koodi: Java-ohjelma Armstrong-numeron tarkistamiseksi

Esimerkki 2: Tarkista Armstrongin numero n numerosta

 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.") )

Tässä ohjelmassa olemme käyttäneet kahta silmukkaa. Ensimmäistä silmukkaa käytetään laskemaan numeroiden lukumäärä.

Sitten alkuperäinen numero palautetaan annettuun numeroon.

Toinen taas silmukka tarkistaa sitten, onko numero armstrong vai ei.

Käy tällä sivulla oppiaksesi, kuinka voit näyttää kaikki armstrong-luvut kahden aikavälin välillä.

Mielenkiintoisia artikkeleita...