Program Kotlin na kontrolu Armstrongovho čísla

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, Doublepretože powprijíma iba Doubleparametre, 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.

Zaujímavé články...