Java programm numbri faktori leidmiseks

Selles programmis õpite leidma arvu faktoori, kasutades Java-s silmi ja while.

Selle näite mõistmiseks peaksid teil olema teadmised järgmistest Java programmeerimise teemadest:

  • Java aasale
  • Java ajal ja tee … Loopi ajal

Positiivse arvu n faktoriaal arvutatakse järgmiselt:

 faktori väärtus n (n!) = 1 * 2 * 3 * 4 *… * n 

Näide 1: Leidke numbri faktoriaal loopi jaoks

 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); ) )

Väljund

 Faktooriarv 10 = 3628800

Selles programmis oleme kasutanud tsüklit, et tsüklida läbi kõik numbrid vahemikus 1 kuni etteantud numbrini num (10) ja iga numbri kuni num korrutis salvestatakse muutuja faktoriaalisse.

Suurte faktooriumi tulemuste salvestamiseks oleme int-i asemel kasutanud pikka aega. Kuid see pole endiselt piisavalt suur, et suuremate arvude (näiteks 100) väärtust salvestada.

Tulemuste jaoks, mida ei saa pikka muutujasse salvestada, kasutame teegis BigIntegerdeklareeritud muutujat java.math.

Näide 2: BigIntegeri abil leiate numbri faktori

 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); ) )

Väljund

 Faktoriaalarv 30 = 265252859812191058636308480000000

Siin longkasutame selle asemel BigIntegermuutuvat faktoriaali.

Kuna *seda ei saa kasutada BigInteger, kasutame selle multiply()toote asemel . Samuti tuleks BigIntegerkorrutamiseks arv valada numbrile .

Samamoodi võime selle probleemi lahendamiseks kasutada ka mõnda aega.

Näide 3: Leidke arvu faktor, kasutades silmust while

 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); ) )

Väljund

 Faktoor 5 = 120

Eespool nimetatud programmis peame erinevalt for loop'ist suurendama i väärtust tsükli kehas.

Kuigi mõlemad programmid on tehniliselt õiged, on antud juhul parem kasutada loopi jaoks. Selle põhjuseks on asjaolu, et iteratsiooni arv (kuni num) on teada.

Rekursiooni abil numbri faktori leidmiseks külastage seda lehte.

Huvitavad Artiklid...