English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste programa, você aprenderá a verificar se um número dado é um número Armstrong. Você aprenderá a fazer isso usando loops for e while em Java.
Um inteiro positivo é chamado de Armstrong order, n se
abcd... = an + bn + cn + dn + ...
Para3dígitos, a soma das potências ao cubo de cada dígito é igual ao número. Por exemplo:
153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 é um número Armstrong.
public class Armstrong { public static void main(String[] args) { int número = 371, originalNumber, resto, resultado = 0; originalNumber = number; while (originalNumber != 0) { remainder = originalNumber % 10; result += Math.pow(resto, 3); originalNumber /= 10; } if (result == number) System.out.println(number + "É um número Armstrong."); else System.out.println(number + "Não é um número Armstrong."); } }
Quando você executar este programa, a saída será:
371 é um número Armstrong.
Primeiro, o valor do número (number) é armazenado em uma variável inteira originalNumber. Isso porque precisamos comparar o número final com o número original no final.
Em seguida, usa-se um loop while para percorrer o originalNumber, até que ele seja igual a 0.
Em cada iteração, o último dígito do número é armazenado no resto.
Em seguida, usa-se a função Math.pow() para adicionar ao resto3(dígitos do número)e adiciona ao resultado.
Depois, divide-se por10Em seguida, remove-se o último dígito do originalNumber.
Por fim, compara-se o resultado com o número. Se forem iguais, é um número Armstrong. Se não forem, não é.
public class Armstrong { public static void main(String[] args) { int número = 1634, originalNumber, resto, resultado = 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 + "É um número Armstrong."); else System.out.println(number + "Não é um número Armstrong."); } }
Quando você executar este programa, a saída será:
1634 é um número Armstrong.
Neste programa, não usamos loop while, mas sim dois loops for.
O primeiro loop for é usado para calcular o número de dígitos no número. É uma forma comprimida da seguinte:
for (; originalNumber != 0; originalNumber /= 10) { n++; }
Então, o segundo loop for calcula o result, onde no cada iteração, o resto é elevado ao poder do número n.
Acesse esta página para saber comoExibir todos os números Armstrong entre dois intervalos.