Kotlinov program za provjeru Armstrongova broja

U ovom ćete programu naučiti provjeriti je li zadani broj armstrong broj ili nije. To ćete naučiti koristeći while petlju u Kotlinu.

Pozitivni cijeli broj naziva se Armstrongov broj reda n ako

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

U slučaju Armstrongova broja od 3 znamenke, zbroj kocki svake znamenke jednak je samom broju. Na primjer:

 153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 je Armstrongov broj. 

Primjer 1: Provjerite Armstrongov broj za troznamenkasti broj

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

Kada pokrenete program, izlaz će biti:

 371 je Armstrongov broj.
  • Prvo, zadana vrijednost broja (broja) pohranjuje se u drugu cjelobrojnu varijablu, originalNumber. To je zato što na kraju moramo usporediti vrijednosti konačnog broja i izvornog broja.
  • Zatim se za petlju kroz originalNumber koristi petlja while dok ne bude jednaka 0.
    • Na svakoj se iteraciji zadnja znamenka broja pohranjuje u ostatak.
    • Zatim se ostatak napaja s 3 (broj znamenki) pomoću Math.pow()funkcije i dodaje rezultatu.
      Ovdje se ostatak pretvara u Doublejer powprihvaća samo Doubleparametre, a njegova se vrijednost ponovno pretvara uInt
    • Zatim se posljednja znamenka uklanja iz originalnog broja nakon dijeljenja s 10.
  • Na kraju se uspoređuju rezultat i broj. Ako je jednak, to je armstrong broj. Ako nije, nije.

Evo ekvivalentnog Java koda: Java program za provjeru Armstrongova broja

Primjer 2: Provjerite Armstrongov broj za n znamenki

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

U ovom smo programu koristili dvije while petlje. Prva while petlja koristi se za brojanje broja znamenki u broju.

Zatim se izvorni broj vraća na zadani broj.

Druga while petlja zatim provjerava je li broj armstrong ili ne.

Posjetite ovu stranicu da biste saznali kako možete prikazati sve armstrong brojeve između dva intervala.

Zanimljivi članci...