Python Program egy szám faktorszámának megtalálására

⚡ Okos összefoglaló

Egy szám faktoriálisa Python minden pozitív egész szám szorzata az adott számig. Python for ciklussal, if-else ellenőrzéssel, rekurzióval vagy a beépített math.factorial() függvénnyel számítja ki.

  • 🔘 A hurokhoz: Iteráljon 1-től n-ig, egy futó szorzatot szorozva a faktoriális létrehozásához.
  • ☑️ Ha-más esetben ellenőrzés: Védje a negatív bemenetet, amely hibát ad vissza, mivel a faktoriálisok nemnegatív egész számokat igényelnek.
  • Rekurzió: Egy függvény n-1-gyel hívja magát, amíg el nem éri a 0 alapesetet.
  • 🧪 math.faktoriális(): Importálj matematikai adatokat, és hívj meg egy beépített függvényt a gyors, tesztelt eredményért.
  • 🇧🇷 Szélsőséges esetek: A 0 faktoriálisa egyenlő 1-gyel, és Python natívan kezeli a nagyon nagy eredményeket.
  • 🤖 MI és adattudomány: A valószínűségszámítás, a kombinatorika és a SciPy-hoz hasonló könyvtárak faktoriálisokat használnak tömbökön.

Python Program egy szám faktorszámának megtalálására

Az alábbi szakaszok négy módszert mutatnak be egy faktoriális kiszámítására Python — egy for ciklus, egy if-else verzió, rekurzió és a math.factorial() — plusz az alapul szolgáló algoritmus és alkalmazásai.

Szám faktorála a ciklushoz

Vegyük például a Python Egy olyan kód, amely pozitív egész számot vesz bemenetként a pozitív egész számok faktoriálisának meghatározásához. A következő kódban a ciklus eggyel kezdődik, majd minden olyan számmal megszorozza az eredményt, amely megelőzi azt a számot, amelynek faktoriálisát meg kell határozni.

A következő Python A kód egy ciklus segítségével szemlélteti a faktoriális függvényt.

Python kód:

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)

output:

Input a number
4
The factorial of the number is 24

A fenti Python A program csak pozitív számokat fogad el bemenetként, és nem ellenőrzi a negatív számokat. Ebben a programban a szorzó 1, ha j egyenlő 1-gyel. Amikor j egyenlő 2, a szorzót megszorozza 2-vel, és ezt a műveletet addig hajtja végre, amíg j el nem éri a 4-et, így 24-et kap.

Egy szám faktorálása az IF…else utasítás használatával

A következő Python A kód egy függvény segítségével szemlélteti a faktoriális függvényt. A ciklusos verzióval ellentétben ez a program a faktoriális kiszámítása előtt negatív számokat is ellenőriz.

Az előzőben Python kódban a negatív számok ellenőrzését nem alkalmazták, így a faktoriális függvény hiányos volt, és hajlamos volt hibaüzenetet adni, ha negatív számokat adtak meg bemenetként.

A megadott kódban a ciklus eggyel kezdődik, és minden megelőző számmal megszorozza az eredményt, valamint a függvény negatív számokra is ellenőrzi a bemenetet.

Python kód:

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

output:

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

Ez a Python A program pozitív számokat fogad el, és negatív számokra is alkalmaz egy ellenőrzést az if és az else utasítások használatával, helyesen adva vissza 24-et 4-es bemenet esetén.

Szám faktoriális rekurzióval

A következő Python A kód rekurzió segítségével szemlélteti a faktoriális függvényt. Ebben a példában egy rekurzív függvény, amely pozitív egész számot vesz bemenetként, meghatározza a faktoriális számot.

Python kód:

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

output:

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

A rekurzió egy olyan koncepcióként magyarázható, amelyben a meghívott függvény Python A modul újra és újra meghívhatja magát. Addig fut, amíg a Python A modulban jelen lévő feltétel teljesül, ahol a meghívott függvény értékkel kerül átadásra.

A fentiekben Python programban a def faktoriális függvény rekurzívan hívja magát, amíg a szám el nem éri a nullát. Amint a szám eléri a nullát, 1-re inicializálja, ezzel véget vetve a rekurziónak.

Egy szám faktoriálisa a math.factorial() függvény használatával

A következő Python A kód a faktoriális függvényt a math.factorial() függvénnyel szemlélteti, amely a math modul importálásával használható.

Ez a függvény nem fogad el negatív egész számokat, és értékhibát dob, ha lebegőpontos számokat adunk meg.

Python kód:

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

output:

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

A faktoriális program algoritmusa in Python

Vegyünk egy példát, amely illusztrálja a faktoriális fogalmát.

Az 5-ös faktoriális meghatározásához kövesse az alábbi lépéseket:

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

Itt, 5! 120-ban van kifejezve.

Az alábbi ábra segít megérteni a faktoriális számítási algoritmust, és ebben az esetben vegyünk egy példát a faktoriális 4-re!

Algoritmus a faktoros programhoz

Algoritmus cum képi példa a faktoriális 4-re!

A Factorial alkalmazása in Python

A számfaktoriális matematikai alkalmazások széles körben használhatók. Itt vannak a fontos alkalmazások Python:

  • Python segít a számításban, majd a faktoriális nyomtatás gyorsabb és hatékonyabb, mint más elérhető programozási nyelvek.
  • Az Python a kód könnyen érthető és különböző platformokon is replikálható, valamint a faktoriális Python A program számos matematikai modellépítési feladatba beépíthető.

GYIK

Egy nemnegatív egész n faktoriálisa, amelyet n!-ként írunk, az 1-től n-ig terjedő összes pozitív egész szám szorzata. Például 5! = 5 × 4 × 3 × 2 × 1 = 120.

Definíció szerint a 0 faktoriálisa 1. Minden metódus – ciklus, rekurzió vagy math.factorial() – 1-et ad vissza a 0 bemenet esetén, és ez az alapeset a rekurzív hívásokat is leállítja.

Igen. Python Az egész számok pontossága korlátlan, így a math.factorial(100) egy 158 jegyű eredményt ad vissza túlcsordulás nélkül. Csak a memória és a futási idő növekszik a bemenet méretével.

A hurokhoz általában az előnyben részesített. Mindkettő O(n) időben fut, de a ciklus konstans memóriát használ, míg a rekurzió egy hívásvermet ad hozzá, amely eltalálhatja a Pythonrekurziós korlátja.

Minden standard módszer n−1 szorzást igényel, tehát az időbonyolultság O(n). Az iteratív ciklus O(1)-en tartja a helyet, míg a rekurzió O(n) helyet használ a hívási veremhez.

A mély rekurzió meghaladhatja Pythonalapértelmezett korlátja közel 1000 hívás. Nagy bemenetek esetén iteratív ciklust vagy math.factorial() függvényt használjon, vagy emelje meg a felső határt a sys.setrecursionlimit() függvénnyel.

Igen. A faktoriálisok megjelennek a kombinatorikákban és a valószínűségeloszlásokban, mint például a Poisson- és a binomiális eloszlás, amelyek számos gépi tanulási modell alapját képezik. Az adattudományi könyvtárak vektorizált faktoriális segédprogramokat is kínálnak tömbökhöz.

Igen. A GitHub Copilot és hasonló MI-asszisztensek ciklus-, rekurzív és math.factorial() verziókat generálnak egy rövid promptból. Mindig tekintsd át a negatív számokra vonatkozó javaslatot és a 0! alapesetet.

Foglald össze ezt a bejegyzést a következőképpen: