Neste programa, você aprenderá a verificar se um determinado número é um número armstrong ou não. Você aprenderá a fazer isso usando um loop while em Kotlin.
Um número inteiro positivo é chamado de número Armstrong de ordem n se
abcd… = a n + b n + c n + d n +…
No caso de um número Armstrong de 3 dígitos, a soma dos cubos de cada dígito é igual ao próprio número. Por exemplo:
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 é um número de Armstrong.
Exemplo 1: Verifique o número Armstrong para um número de 3 dígitos
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.") )
Quando você executa o programa, a saída será:
371 é um número Armstrong.
- Primeiro, o valor de determinado número (número) é armazenado em outra variável inteira, originalNumber. Isso ocorre porque precisamos comparar os valores do número final e do número original no final.
- Em seguida, um loop while é usado para percorrer originalNumber até que seja igual a 0.
- Em cada iteração, o último dígito de num é armazenado no resto.
- Então, o resto é alimentado por 3 (número de dígitos) usando a
Math.pow()
função e adicionado ao resultado.
Aqui, o resto é convertido paraDouble
porquepow
só aceitaDouble
parâmetros e seu valor é novamente convertido paraInt
- Em seguida, o último dígito é removido do número original após a divisão por 10.
- Finalmente, o resultado e o número são comparados. Se igual, é um número armstrong. Se não, não é.
Aqui está o código Java equivalente: Programa Java para verificar o número Armstrong
Exemplo 2: verificar o número Armstrong para n dígitos
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.") )
Neste programa, usamos dois loops while. O primeiro loop while é usado para contar o número de dígitos no número.
Então, originalNumber é restaurado para o número fornecido.
O segundo loop while verifica se o número é armstrong ou não.
Visite esta página para saber como você pode exibir todos os números da Armstrong entre dois intervalos.