Sunday, May 10, 2020

Viết chương trình tính giai thừa của một số java

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 cách sử dụng vòng lặp for và while trong Java.
Viết chương trình tính giai thừa của một số java

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 hệ số 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);
    }
}
Khi bạn chạy chương trình, đầu ra sẽ là:
Factorial of 10 = 3628800
Trong chương trình này, chúng tôi đã sử dụng vòng lặp để lặp qua tất cả các số từ 1 đến số num đã cho (10) và sản phẩm của mỗi số cho đến khi num được lưu trữ trong một giai thừa.
Chúng tôi đã sử dụng lâu thay vì int để lưu trữ 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 các số lớn hơn (giả sử 100).
Để 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 biến BigInteger được khai báo trong thư viện java.math.
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);
    }
}
Khi bạn chạy chương trình, đầu ra sẽ là:
Factorial of 30 = 265252859812191058636308480000000
Ở đây, thay vì long, chúng tôi sử dụng giai thừa biến BigInteger.
Vì, * không thể được sử dụng với BigInteger, thay vào đó, chúng tôi sử dụng phép nhân () cho sản phẩm. Ngoài ra, num nên được chuyển thành BigInteger để nhân.
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);
    }
}
Khi bạn chạy chương trình, đầu ra sẽ là:
Factorial of 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 thân vòng lặp.
Mặc dù cả hai chương trình đều đúng về mặt kỹ thuật, tốt hơn là sử dụng vòng lặp trong trường hợp này. Đó là vì số lần lặp (tối đa num) đã biết.
Truy cập trang này để tìm hiểu giai thừa của một số bằng cách sử dụng đệ quy.

No comments:

Post a Comment