Selles programmis õpite kontrollima, kas antud number on armstrongi number või mitte. Õpid seda tegema, kasutades Kotlinis mõnda aega silmust.
Positiivset täisarvu nimetatakse Armstrongi arvuks, kui n
abcd… = a n + b n + c n + d n +…
Armstrongi 3-kohalise arvu korral võrdub iga numbri kuubikute summa number ise. Näiteks:
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 on Armstrongi arv.
Näide 1: Kontrollige Armstrongi numbrit 3-kohalise numbri jaoks
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.") )
Programmi käivitamisel on väljund järgmine:
371 on Armstrongi number.
- Esiteks, antud numbri (arvu) väärtus salvestatakse teise täisarvu muutujasse originalNumber. Seda seetõttu, et peame võrdlema lõpparvu ja algarvu väärtusi lõpus.
- Seejärel kasutatakse mõnda aega loopi algse numbri läbimiseks, kuni see on võrdne 0-ga.
- Igal iteratsioonil salvestatakse numbri viimane number ülejäänud.
- Seejärel toidetakse ülejäänud funktsioon 3 abil (numbrite arv), kasutades
Math.pow()
funktsiooni ja lisatakse tulemuseks.
Siin teisendatakse ülejäänud osa väärtuseks,Double
kunapow
aktsepteeritakse ainultDouble
parameetreid, ja selle väärtus teisendatakse uuesti väärtuseksInt
- Seejärel eemaldatakse algarvust viimane number pärast jagamist 10-ga.
- Lõpuks võrreldakse tulemust ja arvu. Kui see on võrdne, on see armstrongi arv. Kui ei, siis pole.
Siin on samaväärne Java-kood: Java-programm Armstrongi numbri kontrollimiseks
Näide 2: Kontrollige Armstrongi numbrit n-kohalise numbri jaoks
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.") )
Selles programmis oleme kasutanud kahte silmust. Esimest silmust kasutatakse arvus olevate numbrite arvu lugemiseks.
Seejärel taastatakse algne number antud numbrile.
Seejärel kontrollib teine while-silmus, kas number on armstrong või mitte.
Sellelt lehelt saate teada, kuidas saate kahe intervalli vahel kuvada kõiki armstrongi numbreid.