Java-ohjelma numeron tekijän löytämiseksi

Tässä ohjelmassa opit etsimään luvun faktorin käyttämällä Java-silmukkaa ja taas -silmukkaa.

Tämän esimerkin ymmärtämiseksi sinulla on oltava tieto seuraavista Java-ohjelmointiaiheista:

  • Java silmukalle
  • Java taas ja tee … samalla kun silmukka

Positiivisen luvun n kerroin saadaan:

 kerroin n (n!) = 1 * 2 * 3 * 4 *… * n 

Esimerkki 1: Etsi luvun kerroin käyttämällä silmukkaa

 public class Factorial ( public static void main(String() args) ( int num = 10; long factorial = 1; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial *= i; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )

Tuotos

 Kerroin 10 = 3628800

Tässä ohjelmassa olemme käyttäneet silmukkaa silmukoiden läpi kaikki numerot välillä 1 ja annettu numero num (10), ja jokaisen luvun tulo numeroon saakka on tallennettu muuttujaan.

Olemme käyttäneet pitkään int-sijasta tallentaaksemme suuria faktorial-tuloksia. Se ei kuitenkaan ole vielä tarpeeksi suuri tallentamaan suurempien numeroiden (esimerkiksi 100) arvoa.

Tuloksiin, joita ei voida tallentaa pitkään muuttujaan, käytämme kirjastossa BigIntegerilmoitettua muuttujaa java.math.

Esimerkki 2: Etsi luvun kerroin BigIntegerin avulla

 import java.math.BigInteger; public class Factorial ( public static void main(String() args) ( int num = 30; BigInteger factorial = BigInteger.ONE; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial = factorial.multiply(BigInteger.valueOf(i)); ) System.out.printf("Factorial of %d = %d", num, factorial); ) )

Tuotos

 Kerroin 30 = 265252859812191058636308480000000

Täällä sen sijaan longkäytämme BigIntegermuuttujaa kertoma.

Koska *sitä ei voida käyttää BigInteger, käytämme sen sijaan multiply()tuotteelle. Myös numero tulisi heittää kohtaan BigIntegerkertolasku.

Samoin voimme käyttää jonkin aikaa silmukkaa tämän ongelman ratkaisemiseen.

Esimerkki 3: Etsi luvun kerroin while-silmukan avulla

 public class Factorial ( public static void main(String() args) ( int num = 5, i = 1; long factorial = 1; while(i <= num) ( factorial *= i; i++; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )

Tuotos

 Kerroin 5 = 120

Yllä olevassa ohjelmassa, toisin kuin for -silmukalle, meidän on kasvatettava i: n arvoa silmukan rungossa.

Vaikka molemmat ohjelmat ovat teknisesti oikein, on parempi käyttää silmukkaa tässä tapauksessa. Se johtuu siitä, että iteroinnin määrä (upto num) on tiedossa.

Käy tällä sivulla oppiaksesi etsimään luvun faktori rekursiota käyttämällä.

Mielenkiintoisia artikkeleita...