Programa Java para verificar o número Armstrong

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 for e um loop while em Java.

Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação Java:

  • Java while e do … while Loop
  • Instrução Java if… else
  • Java para Loop

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

 public class Armstrong ( public static void main(String() args) ( int number = 371, originalNumber, remainder, result = 0; originalNumber = number; while (originalNumber != 0) ( remainder = originalNumber % 10; result += Math.pow(remainder, 3); originalNumber /= 10; ) if(result == number) System.out.println(number + " is an Armstrong number."); else System.out.println(number + " is not an Armstrong number."); ) )

Resultado

 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.
    • 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 de Armstrong. Se não, não é.

Exemplo 2: verificar o número Armstrong para n dígitos

 public class Armstrong ( public static void main(String() args) ( int number = 1634, originalNumber, remainder, result = 0, n = 0; originalNumber = number; for (;originalNumber != 0; originalNumber /= 10, ++n); originalNumber = number; for (;originalNumber != 0; originalNumber /= 10) ( remainder = originalNumber % 10; result += Math.pow(remainder, n); ) if(result == number) System.out.println(number + " is an Armstrong number."); else System.out.println(number + " is not an Armstrong number."); ) )

Resultado

 1634 é um número Armstrong.

Neste programa, em vez de usar o loop while, usamos dois loops for.

O primeiro loop for é usado para contar o número de dígitos do número. É a forma condensada de:

 para (; número original! = 0; número original / = 10) (n ++;)

O segundo laço for então calcula o resultado onde, em cada iteração, o restante é alimentado pelo número de dígitos n.

Visite esta página para saber como você pode exibir todos os números da Armstrong entre dois intervalos.

Artigos interessantes...