W tym programie nauczysz się sprawdzać, czy podana liczba jest liczbą Armstronga, czy nie. Dowiesz się, jak to zrobić, używając pętli for i pętli while w Javie.
Aby zrozumieć ten przykład, należy znać następujące tematy dotyczące programowania w języku Java:
- Java while i zrób… while Loop
- Instrukcja Java if… else
- Java for Loop
Dodatnią liczbę całkowitą nazywamy liczbą Armstronga rzędu n, jeśli
abcd… = a n + b n + c n + d n +…
W przypadku liczby Armstronga składającej się z 3 cyfr, suma sześcianów każdej cyfry jest równa samej liczbie. Na przykład:
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 to liczba Armstronga.
Przykład 1: Sprawdź 3-cyfrowy numer Armstronga
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."); ) )
Wynik
371 to numer Armstrong.
- Po pierwsze, podana wartość liczbowa (liczba) jest przechowywana w innej zmiennej całkowitej, originalNumber. Dzieje się tak, ponieważ musimy porównać wartości liczby końcowej i liczby pierwotnej na końcu.
- Następnie pętla while jest używana do przechodzenia przez originalNumber, aż będzie równa 0.
- W każdej iteracji ostatnia cyfra num jest przechowywana w pozostałej części.
- Następnie reszta jest zasilana przez 3 (liczbę cyfr) za pomocą
Math.pow()
funkcji i dodawana do wyniku. - Następnie ostatnia cyfra jest usuwana z oryginalnego numeru po podzieleniu przez 10.
- Na koniec porównuje się wynik i liczbę. Jeśli jest równa, jest to liczba Armstronga. Jeśli nie, to nie jest.
Przykład 2: Sprawdź numer Armstrong pod kątem n cyfr
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."); ) )
Wynik
1634 to numer Armstronga.
W tym programie zamiast pętli while użyliśmy dwóch pętli for.
Pierwsza pętla for służy do zliczania liczby cyfr w liczbie. Jest to skondensowana forma:
for (; originalNumber! = 0; originalNumber / = 10) (n ++;)
Następnie druga pętla for oblicza wynik, przy czym w każdej iteracji reszta jest zasilana liczbą cyfr n.
Odwiedź tę stronę, aby dowiedzieć się, jak wyświetlić wszystkie liczby Armstronga między dwoma interwałami.