Silnia - co to i do czego służy?
Silnia liczby naturalnej n (zapisywana jako n!) to iloczyn wszystkich liczb naturalnych od 1 do n. Czyli: n! = 1 × 2 × 3 × ... × n. Przykłady: 5! = 120, 10! = 3 628 800, 20! ponad 2 kwintyliony.
Kilka kluczowych wartości
- 0! = 1 (definicja)
- 1! = 1
- 2! = 2
- 3! = 6
- 4! = 24
- 5! = 120
- 10! = 3 628 800
- 20! ≈ 2,4 × 10¹⁸
- 100! ≈ 9,3 × 10¹⁵⁷
Zastosowania silni
- Kombinatoryka - permutacje i kombinacje
- Statystyka - rozkłady prawdopodobieństwa
- Liczba ułożeń - na ile sposobów ułożyć n elementów
- Liczba możliwych haseł - permutacje znaków
- Wzory Newtona - dwumian Newtona
Przykład - permutacje
Na ile sposobów można ustawić 5 osób w kolejce? Odpowiedź: 5! = 120. Na pierwszym miejscu może stać dowolna z 5 osób, na drugim dowolna z 4 pozostałych, itd. 5 × 4 × 3 × 2 × 1 = 120 możliwych ustawień.
Kombinacje - liczba "n po k"
Wzór na liczbę kombinacji k elementów z n: C(n,k) = n! / (k! × (n−k)!). Klasyczny przykład: ile typów Lotto można utworzyć? Wybieramy 6 z 49. C(49,6) = 49! / (6! × 43!) = 13 983 816. Stąd szansa wygrania głównej to 1 do prawie 14 milionów.
Permutacje vs kombinacje
Permutacja - kolejność ma znaczenie. Ustawienie 5 osób w rzędzie: 5! = 120.
Kombinacja - kolejność nie ma znaczenia. Wybór 5 osób z grupy 10 (do drużyny): C(10,5) = 252. Mniej możliwości, bo nie rozróżniamy "kto pierwszy".
Wzór Stirlinga - przybliżenie
Dla bardzo dużych n używa się przybliżenia: n! ≈ √(2πn) × (n/e)ⁿ. Dla n=100 daje to wartość zbliżoną do prawdziwego 100! z dokładnością do 1%. Używane w analizie matematycznej i fizyce statystycznej.
Silnia w programowaniu
Klasyczne ćwiczenie - rekurencja:
function silnia(n) {
if (n <= 1) return 1;
return n * silnia(n - 1);
}
Dla dużych n (powyżej 20) zwykłe liczby int przekraczają zakres - trzeba używać typu BigInt lub specjalnych bibliotek do dużych liczb. Nasz kalkulator używa BigInt - liczy do 1000! bez problemu.