Python Program do znajdowania silni liczby

⚡ Inteligentne podsumowanie

Silnia liczby w Python jest iloczynem każdej dodatniej liczby całkowitej do podanej liczby. Python oblicza go za pomocą pętli for, sprawdzenia if-else, rekurencji lub wbudowanej funkcji math.factorial().

  • 🔘 Pętla for: Powtarzaj działanie od 1 do n, mnożąc bieżący iloczyn w celu utworzenia silni.
  • ️ Sprawdzanie warunkowe: Zabezpiecz się przed ujemnymi danymi wejściowymi, zwracającymi błąd, ponieważ silnie wymagają nieujemnych liczb całkowitych.
  • ✅ Rekurencja: Funkcja wywołuje samą siebie z n-1, dopóki nie osiągnie przypadku bazowego 0.
  • 🧪 math.silnia(): Zaimportuj obliczenia matematyczne i wywołaj jedną wbudowaną funkcję, aby uzyskać szybki i sprawdzony wynik.
  • 🛠️. Przypadki skrajne: Silnia 0 równa się 1, a Python obsługuje natywnie bardzo duże wyniki.
  • 🤖 Sztuczna inteligencja i nauka o danych: Rachunek prawdopodobieństwa, kombinatoryka i biblioteki takie jak SciPy wykorzystują silnię w tablicach.

Python Program do znajdowania silni liczby

Poniższe sekcje przedstawiają cztery sposoby obliczania silni w Python — pętla for, wersja if-else, rekurencja i math.factorial() — plus podstawowy algorytm i zastosowania.

Silnia liczby przy użyciu pętli for

Weźmy przykład Python Kod, który przyjmuje dodatnią liczbę całkowitą jako dane wejściowe w celu określenia silni dodatnich liczb całkowitych. W poniższym kodzie pętla rozpoczyna się od jedynki, a następnie mnoży przez każdą liczbę poprzedzającą liczbę, której silnia ma zostać ustalona.

Poniższy Python Kod ilustruje funkcję silni za pomocą pętli.

Python kod:

print ("Input a number")
factorialIP = int (input ())
ffactor23 = 1
for j in range (1, factorialIP+1):
   ffactor23 = ffactor23 * j
print ("The factorial of the number is “, ffactor23)

Wyjście:

Input a number
4
The factorial of the number is 24

Powyżej Python Program przyjmuje na wejściu wyłącznie liczby dodatnie i nie sprawdza liczb ujemnych. W tym programie współczynnik wynosi 1, gdy j jest równe 1. Gdy j wynosi 2, współczynnik jest mnożony przez 2 i program będzie wykonywał działanie, aż j osiągnie wartość 4, aż do 24.

Silnia liczby przy użyciu instrukcji IF…else

Poniższy Python Kod ilustruje funkcję silni za pomocą funkcji. W przeciwieństwie do wersji z pętlą, ten program sprawdza również obecność liczb ujemnych przed obliczeniem silni.

W poprzednim Python W kodzie nie zastosowano sprawdzania liczb ujemnych, przez co funkcja silni była niekompletna i podatna na wyświetlenie komunikatu o błędzie, jeśli jako dane wejściowe podano liczby ujemne.

W podanym kodzie pętla rozpoczyna się od jeden i mnoży przez każdą poprzednią liczbę, a funkcja sprawdza również, czy dane wejściowe zawierają liczby ujemne.

Python kod:

print("Enter a number for the purpose of determining factorial")
factorialIP = int(input())
def factorial(factorialIP):
   if factorialIP < 0:
     print ('Factorial does not exist')
     factor=0
     return factor
   elif factorialIP == 0:
     factor=1
     return factor
     print(factor)
   else:
     factor = 1
     for j in range (1, factorialIP+1):
       factor = factor * j
     return factor
  print ("The factorial of the number is ", factorial(factorialIP))

Wyjście:

1) Enter a number to determine factorial
   -4
   Factorial does not exist
   The factorial of the number is 0

2) Enter a number to determine factorial
   4
   Factorial does not exist
   The factorial of the number is 24

Ten Python Program akceptuje liczby dodatnie i dodaje sprawdzenie liczb ujemnych za pomocą instrukcji if i else, prawidłowo zwracając wartość 24 przy wartości wejściowej 4.

Silnia liczby przy użyciu rekurencji

Poniższy Python Kod ilustruje funkcję silni za pomocą rekurencji. W tym przykładzie funkcja rekurencyjna, która przyjmuje dodatnią liczbę całkowitą jako dane wejściowe, wyznacza liczbę silni.

Python kod:

print("Enter a number for the purpose of determining factorial")
def factorial(num2):
  if num2 < 0:
    return 'Factorial does not exist'
  elif num2 == 0:
     return 1
  else:
     return num2 * factorial(num2-1)
number1 = int(input())
print("The factorial of the number is",factorial(number1))

Wyjście:

Enter a number for the purpose of determining factorial
4
The factorial of the number is 24

Rekursję można wyjaśnić jako koncepcję, w której funkcja wywoływana w Python Moduł może wywoływać sam siebie wielokrotnie. Działa do momentu, aż Python spełniony jest warunek obecny w module, przy czym do wywołanej funkcji przekazywana jest wartość.

W powyższym Python W programie funkcja def factorial wywołuje samą siebie rekurencyjnie, dopóki liczba nie osiągnie zera. Gdy liczba osiągnie zero, inicjuje ją jako 1, kończąc rekurencję.

Silnia liczby za pomocą math.factorial()

Poniższy Python Kod ilustruje funkcję silni za pomocą math.factorial(), której można użyć po zaimportowaniu modułu math.

Funkcja ta nie akceptuje ujemnych liczb całkowitych i zgłasza błąd wartości, gdy podane zostaną liczby zmiennoprzecinkowe.

Python kod:

print("Enter a number for computing factorial")
import math
number1 = int(input())
print("The factorial is as computed comes out to be ")
print(math.factorial(number1))

Wyjście:

Enter a number for computing factorial
4
The factorial, as computed, comes out to be 24

Algorytm programu silniowego w Python

Weźmy przykład ilustrujący koncepcję silni.

Aby wyznaczyć silnię 5, wykonaj następujące kroki:

5! = 5 x (5-1) x (5-2) x (5-3) x (5-4)
5! =120

Tutaj, 5! wyraża się jako 120.

Poniższy diagram pomaga zrozumieć algorytm obliczania silni. W tym przypadku weźmiemy przykład silni 4!

Algorytm programu silniowego

Algorytm z obrazowym przykładem silni 4!

Zastosowanie silni w Python

Silnia liczby ma szerokie zastosowanie w matematyce. Oto ważne zastosowania Python:

  • Python pomaga w obliczeniach, a także umożliwia szybsze i bardziej efektywne drukowanie silni niż w przypadku innych dostępnych języków programowania.
  • Python kod jest łatwy do zrozumienia i można go powielać na różnych platformach, a silnia Python Program można włączyć do wielu zadań z zakresu budowy modeli matematycznych.

FAQ

Silnia nieujemnej liczby całkowitej n, zapisywana jako n!, to iloczyn wszystkich dodatnich liczb całkowitych od 1 do n. Na przykład, 5! równa się 5 × 4 × 3 × 2 × 1 = 120.

Zgodnie z definicją silnia 0 wynosi 1. Każda metoda — pętla, rekurencja czy math.factorial() — zwraca 1 dla wejścia 0, a ten przypadek bazowy zatrzymuje również wywołania rekurencyjne.

Tak. Python Liczby całkowite mają nieograniczoną precyzję, więc funkcja math.factorial(100) zwraca wynik 158-cyfrowy bez przepełnienia. Wraz z rozmiarem danych wejściowych rosną jedynie pamięć i czas wykonania.

A dla pętli jest zazwyczaj preferowany. Oba działają w czasie O(n), ale pętla wykorzystuje stałą pamięć, podczas gdy rekurencja dodaje stos wywołań, który może trafić Pythonlimit rekurencji.

Każda standardowa metoda wymaga n−1 mnożeń, więc złożoność czasowa wynosi O(n). Pętla iteracyjna zajmuje przestrzeń O(1), podczas gdy rekurencja wykorzystuje przestrzeń O(n) dla swojego stosu wywołań.

Głęboka rekurencja może przekroczyć PythonDomyślny limit wynosi około 1000 wywołań. Użyj iteracyjnej pętli for lub math.factorial() w przypadku dużych danych wejściowych albo podnieś limit za pomocą sys.setrecursionlimit().

Tak. Silnie występują w kombinatoryce i rozkładach prawdopodobieństwa, takich jak rozkład Poissona i dwumianowy, które stanowią podstawę wielu modeli uczenia maszynowego. Biblioteki data science oferują również wektoryzowane pomoce silniowe dla tablic.

Tak. GitHub Copilot i podobne asystenty AI generują wersje pętli, rekurencyjne i math.factorial() z krótkiego monitu. Zawsze sprawdzaj sugestię dotyczącą ochrony przed liczbami ujemnymi i przypadku bazowego 0!

Podsumuj ten post następująco: