Chương trình Java để tìm giai thừa của một số

Trong chương trình này, bạn sẽ học cách tìm giai thừa của một số bằng vòng lặp for và while trong Java.

Để hiểu ví dụ này, bạn nên có kiến ​​thức về các chủ đề lập trình Java sau:

  • Java cho Vòng lặp
  • Java while và do… while Loop

Giai thừa của một số dương n được cho bởi:

 giai thừa của n (n!) = 1 * 2 * 3 * 4 *… * n 

Ví dụ 1: Tìm giai thừa của một số bằng vòng lặp for

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

Đầu ra

 Giai thừa của 10 = 3628800

Trong chương trình này, chúng tôi đã sử dụng vòng lặp for để lặp qua tất cả các số từ 1 đến số đã cho num (10) và tích của mỗi số cho đến khi num được lưu trữ trong một giai thừa biến đổi.

Chúng tôi đã sử dụng long thay vì int để lưu trữ các kết quả lớn của giai thừa. Tuy nhiên, nó vẫn không đủ lớn để lưu trữ giá trị của những con số lớn hơn (giả sử 100).

Đối với các kết quả không thể được lưu trữ trong một biến dài, chúng tôi sử dụng BigIntegerbiến được khai báo trong java.maththư viện.

Ví dụ 2: Tìm giai thừa của một số bằng BigInteger

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

Đầu ra

 Giai thừa của 30 = 265252859812191058636308480000000

Ở đây, thay vì long, chúng tôi sử dụng BigIntegergiai thừa biến.

Vì, *không thể được sử dụng với BigInteger, thay vào đó chúng tôi sử dụng multiply()cho sản phẩm. Ngoài ra, num phải được ép kiểu để BigIntegernhân.

Tương tự như vậy, chúng ta cũng có thể sử dụng vòng lặp while để giải quyết vấn đề này.

Ví dụ 3: Tìm giai thừa của một số bằng vòng lặp 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); ) )

Đầu ra

 Giai thừa của 5 = 120

Trong chương trình trên, không giống như vòng lặp for, chúng ta phải tăng giá trị của i bên trong phần thân của vòng lặp.

Mặc dù cả hai chương trình đều đúng về mặt kỹ thuật, nhưng tốt hơn là sử dụng vòng lặp for trong trường hợp này. Đó là vì số lần lặp (tối đa num) đã được biết.

Truy cập trang này để tìm hiểu cách tìm giai thừa của một số bằng cách sử dụng đệ quy.

thú vị bài viết...