V tomto programe sa naučíte skontrolovať, či dané číslo je armstrongovo číslo alebo nie. Naučíte sa to tak, že použijete while v Kotline.
Kladné celé číslo sa nazýva Armstrongovo číslo rádu n, ak
abcd … = a n + b n + c n + d n + …
V prípade Armstrongovho počtu 3 číslic sa súčet kociek každej číslice rovná samotnému číslu. Napríklad:
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 je Armstrongovo číslo.
Príklad 1: Skontrolujte trojmiestne číslo Armstrong Number
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.") )
Po spustení programu bude výstup:
371 je Armstrongovo číslo.
- Najskôr sa hodnota daného čísla (čísla) uloží do inej celočíselnej premennej, originalNumber. Je to preto, že musíme na konci porovnať hodnoty konečného čísla a pôvodného čísla.
- Potom sa cyklická slučka použije na cyklovanie cez originalNumber, kým sa nerovná 0.
- Pri každej iterácii je posledná číslica čísla uložená do zvyšku.
- Potom je zvyšok napájaný pomocou 3 (počet číslic) pomocou
Math.pow()
funkcie a pridaný k výsledku.
Tu sa zvyšok prevedie na,Double
pretožepow
prijíma ibaDouble
parametre, a jeho hodnota sa znova prevedie späť naInt
- Potom sa posledná číslica odstráni z pôvodného čísla po rozdelení na 10.
- Nakoniec sa porovnajú výsledky a počet. Ak je rovnaké, je to ozbrojené číslo. Ak nie, nie je.
Tu je ekvivalentný kód Java: Program Java na kontrolu Armstrongovho čísla
Príklad 2: Skontrolujte číslo Armstronga, či neobsahuje n číslic
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.") )
V tomto programe sme použili dve while cykly. Prvá slučka while sa používa na spočítanie počtu číslic v počte.
Potom sa pôvodné číslo obnoví na dané číslo.
Smyčka while while potom skontroluje, či je číslo armstrong alebo nie.
Na tejto stránke nájdete informácie o tom, ako môžete zobraziť všetky ozbrojené čísla v dvoch intervaloch.