Máy tính giai thừa

Phạm vi: 0 đến 170 (giới hạn JavaScript)

📊 Kết quả

5!
=
120
📏 Số chữ số
3
🔟 Số số 0 tận cùng
1
🔢 Dạng khoa học
1.2e+2

📝 Tính từng bước:

🎨 Cây nhân trực quan

🎯 Hoán vị & Tổ hợp

🔄 Hoán vị P(n,r)

Công thức: P(n,r) = n!/(n-r)!
60
5!/(5-3)! = 60

💡 Thứ tự quan trọng: ABC ≠ BAC

🎲 Tổ hợp C(n,r)

Công thức: C(n,r) = n!/(r!(n-r)!)
10
5!/(3!×2!) = 10

💡 Thứ tự không quan trọng: ABC = BAC

📋 Bảng tham chiếu giai thừa

n n! Chữ số Ví dụ thực tế

💡 Thông tin thú vị

🃏 Xáo bài

52! ≈ 8.07 × 10⁶⁷ cách sắp xếp. Nếu mọi người trên Trái Đất xáo một bộ bài mỗi giây từ thời Vụ Nổ Lớn, chúng ta cũng chỉ chạm đến “bề mặt”!

🎭 Sắp xếp chỗ ngồi

10 người có thể được xếp chỗ theo 10! = 3,628,800 cách khác nhau. Quản lý hậu cần nhà hát trở nên phức tạp theo cấp số nhân!

📊 0! = 1

Theo định nghĩa, 0! = 1. Chỉ có đúng một cách sắp xếp 0 vật: không làm gì cả! Điều này giúp các công thức toán học nhất quán.

🚀 Tốc độ tăng trưởng

Giai thừa tăng nhanh hơn cả hàm mũ! Trong khi 2ⁿ tăng gấp đôi, n! nhân với các giá trị ngày càng lớn. 100! có 158 chữ số!

Máy tính giai thừa - Tính n! kèm các bước

🔢 Tính giai thừa (n!) cho mọi số từ 0 đến 170. Xem phân tích từng bước, hoán vị, tổ hợp và các ứng dụng thực tế.

Giai thừa là gì?

Giai thừa của một số nguyên không âm n, ký hiệu là n!, là tích của tất cả các số nguyên dương nhỏ hơn hoặc bằng n. Nó biểu thị số cách sắp xếp n đối tượng phân biệt.

Công thức giai thừa

n! = n × (n-1) × (n-2) × ... × 3 × 2 × 1

  • 0! = 1 (theo định nghĩa)
  • 1! = 1
  • n! = n × (n-1)! (định nghĩa đệ quy)

Ví dụ giai thừa

  • 5! = 5 × 4 × 3 × 2 × 1 = 120
  • 10! = 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 3,628,800
  • 0! = 1 (trường hợp đặc biệt)
  • 20! = 2,432,902,008,176,640,000

Vì sao 0! = 1?

Có đúng một cách sắp xếp 0 vật: “sắp xếp rỗng”. Định nghĩa này đảm bảo các công thức toán học (đặc biệt trong tổ hợp) hoạt động chính xác. Nó cũng nhất quán với công thức đệ quy: n! = n × (n-1)!, nên 1! = 1 × 0! nghĩa là 0! phải bằng 1.

Hoán vị

P(n,r) = n!/(n-r)!

Số cách sắp xếp r đối tượng từ n đối tượng phân biệt khi thứ tự quan trọng.

  • Ví dụ: P(5,3) = 5!/(5-3)! = 120/2 = 60
  • Ứng dụng: Vị trí trên bục trao giải (hạng 1, 2, 3)

Tổ hợp

C(n,r) = n!/(r!(n-r)!)

Số cách chọn r đối tượng từ n đối tượng phân biệt khi thứ tự không quan trọng.

  • Ví dụ: C(5,3) = 5!/(3!×2!) = 120/(6×2) = 10
  • Ứng dụng: Chọn số xổ số, chọn ủy ban

Số 0 tận cùng trong n!

Các số 0 tận cùng được tạo bởi thừa số 10 = 2 × 5. Vì luôn có nhiều thừa số 2 hơn 5, ta chỉ cần đếm thừa số 5:

Số 0 = ⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + ...

  • 10! có 2 số 0 tận cùng
  • 25! có 6 số 0 tận cùng
  • 100! có 24 số 0 tận cùng

Ứng dụng thực tế

  • Mật mã học: số lượng khóa mã hóa có thể
  • Lập lịch: cách sắp xếp cuộc hẹn, nhiệm vụ, sự kiện
  • Di truyền học: chuỗi DNA/protein có thể
  • Xác suất: tính xác suất trong trò chơi, xổ số
  • Khoa học máy tính: phân tích độ phức tạp thuật toán
  • Sản xuất: sắp xếp dây chuyền sản xuất
  • Logistics: bài toán tối ưu tuyến đường

Một số giá trị giai thừa nổi tiếng

  • 52! ≈ 8.07 × 10⁶⁷ (xáo bài)
  • 70! ≈ 1.2 × 10¹⁰⁰ (lớn hơn số nguyên tử trong vũ trụ ≈ 10⁸⁰)
  • 100! ≈ 9.3 × 10¹⁵⁷ (158 chữ số!)
  • 170! ≈ 7.3 × 10³⁰⁶ (giới hạn tối đa JavaScript)

Xấp xỉ Stirling

Với n lớn, việc tính giai thừa chính xác là không thực tế. Xấp xỉ Stirling:

n! ≈ √(2πn) × (n/e)ⁿ

Xấp xỉ này chính xác hơn khi n tăng. Với n = 10, sai số < 1%.

Tốc độ tăng của giai thừa

Giai thừa tăng nhanh hơn nhiều so với hàm mũ hay đa thức:

  • Đa thức: n² = 100 khi n=10
  • Hàm mũ: 2ⁿ = 1,024 khi n=10
  • Giai thừa: n! = 3,628,800 khi n=10

Giai thừa kép

Giai thừa kép (n!!) nhân cách một số:

  • n!! = n × (n-2) × (n-4) × ... × 2 hoặc 1
  • 7!! = 7 × 5 × 3 × 1 = 105
  • 8!! = 8 × 6 × 4 × 2 = 384

Giai thừa phụ (Derangements)

Giai thừa phụ !n đếm số hoán vị mà không phần tử nào nằm đúng vị trí ban đầu:

!n = n! × (1/0! - 1/1! + 1/2! - 1/3! + ... + (-1)ⁿ/n!)

Ví dụ: !3 = 2 (các cách sắp xếp ABC không chữ nào đúng chỗ: BCA, CAB)

Triển khai trong lập trình

Cách lặp:

function factorial(n) {
    let result = 1;
    for (let i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}
            

Cách đệ quy:

function factorial(n) {
    if (n === 0 || n === 1) return 1;
    return n * factorial(n - 1);
}
            

💡 Mẹo: Khi tính hoán vị hoặc tổ hợp, hãy rút gọn các thừa số chung trước khi tính để tránh tràn số. Với C(100,2) = 100!/(2!×98!), hãy tính (100×99)/2 = 4,950 thay vì tính các giai thừa khổng lồ riêng rẽ!

Bình luận (0)

Chia sẻ ý kiến của bạn — vui lòng lịch sự và đúng chủ đề.

Chưa có bình luận nào. Hãy để lại bình luận và chia sẻ ý kiến của bạn!

Để bình luận, vui lòng đăng nhập.

Đăng nhập để bình luận