English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo programma, imparerai a controllare se un numero fornito è un numero Armstrong. Imparerai come farlo utilizzando cicli for e while in Java.
Un numero intero positivo è chiamato numero di Armstrong di grado n se
abcd... = an + bn + cn + dn + ...
Per i numeri di Armstrong a 3 cifre, la somma dei cubi di ciascun numero è uguale al numero stesso. Ad esempio:
153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 è un numero di Armstrong.
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 + " è un numero di Armstrong."); else System.out.println(number + " non è un numero di Armstrong."); } }
Quando si esegue questo programma, l'output è:
371 è un numero di Armstrong.
Prima di tutto, il valore del numero (number) viene memorizzato in un'altra variabile intera originalNumber. Questo perché dobbiamo confrontare il numero finale con il valore originale.
Poi, usa un ciclo while per esplorare originalNumber fino a quando non è uguale a 0.
In ogni iterazione, l'ultimo numero di num viene memorizzato in remainder.
Poi, usa la funzione Math.pow() per aggiungere 3 (numero di cifre) a remainder e aggiungerlo a result.
Poi, divide per 10 e rimuovi l'ultimo numero di originalNumber.
Infine, confronta result con number. Se sono uguali, è un numero di Armstrong. Se non lo sono, non lo è.
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 + " è un numero Armstrong."); else System.out.println(number + " non è un numero Armstrong."); } }
Quando si esegue questo programma, l'output è:
1634 è un numero Armstrong.
In questo programma, non abbiamo utilizzato il ciclo while, ma due cicli for.
Il primo ciclo for viene utilizzato per calcolare il numero di cifre del numero. È una forma compressa del seguente:
for (; originalNumber != 0; originalNumber /= 10) { n++; }
Poi, il secondo ciclo for calcola result, dove in ogni iterazione, il resto è il numero n elevato alla potenza.
Visita questa pagina per sapere comeMostra tutti i numeri Armstrong tra due intervalli.