Tässä ohjelmassa opit tarkistamaan, onko annettu numero itsepäinen luku vai ei. Opit tekemään tämän käyttämällä Java for for loop ja while -silmukkaa.
Tämän esimerkin ymmärtämiseksi sinulla on oltava tieto seuraavista Java-ohjelmointiaiheista:
- Java taas ja tee … samalla kun silmukka
- Java jos… muuten lausunto
- Java silmukalle
Positiivista kokonaislukua kutsutaan Armstrong-luvuksi, jos n
abcd… = a n + b n + c n + d n +…
Jos kyseessä on Armstrongin 3-numeroinen numero, kunkin numeron kuutioiden summa on sama kuin itse numero. Esimerkiksi:
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 on Armstrongin luku.
Esimerkki 1: Tarkista Armstrong-numerosta 3-numeroinen numero
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."); ) )
Tuotos
371 on Armstrongin numero.
- Ensinnäkin annetun numeron (numero) arvo tallennetaan toiseen kokonaislukumuuttujaan, originalNumber. Tämä johtuu siitä, että meidän on vertailtava lopullisen ja alkuperäisen luvun arvoja lopussa.
- Sitten jonkin aikaa silmukkaa käytetään silmukkaamaan alkuperäisen numeron läpi, kunnes se on yhtä suuri kuin 0.
- Kullakin iteraatiolla viimeinen numeronumero tallennetaan loppuosan.
- Sitten loput saavat virran 3: sta (numeroiden määrä) käyttämällä
Math.pow()
toimintoa ja lisätään tulokseen. - Sitten viimeinen numero poistetaan alkuperäisestä numerosta jaon jälkeen 10: llä.
- Lopuksi tulosta ja lukua verrataan. Jos se on yhtä suuri, se on Armstrongin luku. Jos ei, se ei ole.
Esimerkki 2: Tarkista Armstrongin numero n numerosta
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."); ) )
Tuotos
1634 on Armstrongin numero.
Tässä ohjelmassa olemme käyttäneet kahta silmukoita sen sijaan, että käyttäisit silmukkaa.
Ensimmäistä silmukkaa varten lasketaan numeroiden lukumäärä. Se on tiivistetty muoto:
for (; alkuperäinen numero! = 0; alkuperäinen numero / = 10) (n ++;)
Silmukan toinen laskee tuloksen, jossa jokaisella iteraatiolla loppuosa syötetään numeroiden lukumäärällä n.
Käy tällä sivulla oppiaksesi, kuinka voit näyttää kaikki armstrong-luvut kahden aikavälin välillä.