Python Ohjelma luvun kertoimen löytämiseksi

⚡ Älykäs yhteenveto

Luvun kertoma Python on kaikkien positiivisten kokonaislukujen tulo tähän lukuun asti. Python laskee sen for-silmukalla, if-else-tarkistuksella, rekursiolla tai sisäänrakennetulla math.factorial()-funktiolla.

  • 🔘 Silmukkaa varten: Iteroi luvusta 1 lukuun n kertomalla juokseva tulo kertoman muodostamiseksi.
  • ☑️ Jos-muuten-tarkistus: Suojaudu negatiiviselta syötteeltä, joka palauttaa virheen, koska kertomat tarvitsevat ei-negatiivisia kokonaislukuja.
  • Rekursio: Funktio kutsuu itseään n-1:llä, kunnes se saavuttaa perustapauksen nollan.
  • 🧪 math.factorial(): Tuo matematiikkaa ja kutsu yhtä sisäänrakennettua funktiota saadaksesi nopean ja testatun tuloksen.
  • 🛠️ Ääritapaukset: Luvun 0 kertoma on yhtä kuin 1, ja Python käsittelee erittäin suuria tuloksia natiivisti.
  • 🤖 Tekoäly ja datatiede: Todennäköisyyslaskenta, kombinatoriikka ja kirjastot, kuten SciPy, käyttävät kertomia taulukoissa.

Python Ohjelma luvun kertoimen löytämiseksi

Seuraavissa osioissa näytetään neljä tapaa laskea kertoma Python — for-silmukka, if-else-versio, rekursio ja math.factorial() — sekä taustalla oleva algoritmi ja sovellukset.

Luvun kertoimia käyttämällä silmukkaa

Otetaan esimerkiksi Python koodi, joka ottaa syötteenä positiivisen kokonaisluvun positiivisten kokonaislukujen kertoman määrittämiseksi. Seuraavassa koodissa silmukka alkaa ykkösellä ja kertoo sitten jokaisella luvulla, joka edeltää varsinaista lukua, jonka kertoma määritetään.

Seuraavat Python koodi havainnollistaa kertomafunktiota silmukan avulla.

Python koodi:

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)

lähtö:

Input a number
4
The factorial of the number is 24

Ylempi Python Ohjelma ottaa syötteeksi vain positiivisia lukuja, eikä siinä ole negatiivisten lukujen tarkistusta. Tässä ohjelmassa tekijä on 1, kun j on yhtä suuri kuin 1. Kun j on 2, tekijä kerrotaan kahdella, ja se suorittaa toiminnon, kunnes j saavuttaa luvun 4, jolloin saadaan luku 24.

Lukujen kertoimia käyttämällä IF…else-lausetta

Seuraavat Python koodi havainnollistaa kertomafunktiota funktion avulla. Toisin kuin silmukkaversio, tämä ohjelma tarkistaa myös negatiiviset luvut ennen kertoman laskemista.

Edellisessä Python koodissa negatiivisten lukujen tarkistusta ei käytetty, minkä vuoksi kertomafunktio oli epätäydellinen ja altis virheilmoituksen antamiselle, jos syötteenä annetaan negatiivisia lukuja.

Annetussa koodissa silmukka alkaa ykkösellä ja kertoo sen jokaisella edeltävällä luvulla, ja funktio tarkistaa myös negatiivisten lukujen varalta syötteen.

Python koodi:

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

lähtö:

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

Tämä Python Ohjelma hyväksyy positiiviset luvut ja lisää tarkistuksen negatiivisille luvuille käyttämällä if- ja else-lausekkeita, palauttaen oikein luvun 24, jos syöte on 4.

Lukujen kertoimia käyttämällä rekursiota

Seuraavat Python koodi havainnollistaa kertomafunktiota rekursiolla. Tässä esimerkissä rekursiivinen funktio, joka ottaa syötteeksi positiivisen kokonaisluvun, määrittää kertomaluvun.

Python koodi:

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

lähtö:

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

Rekursio voidaan selittää käsitteenä, jossa funktio, jota kutsutaan Python moduuli voi kutsua itseään yhä uudelleen ja uudelleen. Se toimii, kunnes Python moduulissa oleva ehto täyttyy, jolloin kutsutulle funktiolle annetaan arvo.

Edellä Python ohjelmassa funktio def factorial kutsuu itseään rekursiivisesti, kunnes luku saavuttaa nollan ja ellei se saavuta nollaa. Kun luku saavuttaa nollan, se alustaa luvun arvoksi 1, mikä lopettaa rekursion.

Luvun kertoma käyttäen math.factorial()-funktiota

Seuraavat Python koodi havainnollistaa kertomafunktiota käyttämällä math.factorial()-funktiota, jota voidaan käyttää tuomalla math-moduuli.

Tämä funktio ei hyväksy negatiivisia kokonaislukuja ja se heittää arvovirheen, kun annetaan liukulukuja.

Python koodi:

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

lähtö:

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

Factorial-ohjelman algoritmi sisään Python

Otetaan esimerkki, joka valaisee faktoriaalin käsitettä.

Kertomuksen 5 määrittämiseksi toimi seuraavasti:

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

Tässä, 5! ilmaistaan ​​120:na.

Seuraava kaavio auttaa ymmärtämään faktoriaalin laskenta-algoritmia, ja tässä tapauksessa otetaan esimerkki faktoriaalista 4!

Factorial-ohjelman algoritmi

Algoritmi cum kuvallinen esimerkki faktoriaalista 4!

Factorialin käyttö Python

Lukujen kertoimella on laaja sovellustaso matematiikassa. Tässä on tärkeitä sovelluksia Python:

  • Python auttaa laskennassa, ja sitä seuraa kertomien tulostus nopeammin ja tehokkaammin kuin muilla saatavilla olevilla ohjelmointikielillä.
  • Python koodi on helposti ymmärrettävää ja sitä voidaan kopioida eri alustoille, ja faktoriaali Python ohjelma voidaan sisällyttää useisiin matemaattisten mallien rakentamiseen liittyviin tehtäviin.

UKK

Ei-negatiivisen kokonaisluvun n kertoma, joka kirjoitetaan muodossa n!, on kaikkien positiivisten kokonaislukujen 1:stä n:ään tulo. Esimerkiksi 5! on yhtä kuin 5 × 4 × 3 × 2 × 1 = 120.

Määritelmän mukaan luvun 0 kertoma on 1. Jokainen metodi – silmukka, rekursio tai math.factorial() – palauttaa arvon 1 syötteellä 0, ja tämä perustapaus pysäyttää myös rekursiiviset kutsut.

Kyllä. Python Kokonaisluvuilla on rajoittamaton tarkkuus, joten math.factorial(100) palauttaa 158-numeroisen tuloksen ilman ylivuotoa. Vain muisti ja suoritusaika kasvavat syötteen koon mukana.

A silmukalle on yleensä parempi. Molemmat suoritetaan O(n) ajassa, mutta silmukka käyttää vakiomuistia, kun taas rekursio lisää kutsupinon, joka voi osua Pythonn rekursioraja.

Jokainen standardimetodi tarvitsee n−1 kertolaskua, joten aikavaativuus on O(n). Iteratiivinen silmukka pitää avaruuden O(1):ssä, kun taas rekursio käyttää O(n) avaruutta kutsupinossaan.

Syvä rekursio voi ylittää Pythonn oletusarvoinen raja on lähellä 1000 kutsua. Käytä iteratiivista menetelmää silmukalle tai math.factorial():ia suurille syötteille tai nosta ylärajaa sys.setrecursionlimit():illa.

Kyllä. Kertomuksia esiintyy kombinatoriikassa ja todennäköisyysjakaumissa, kuten Poissonin ja binomiaalijakaumissa, jotka ovat monien koneoppimismallien perustana. Datatieteen kirjastot tarjoavat myös vektorisoituja kertomiapureita taulukoille.

Kyllä. GitHub Copilot ja vastaavat tekoälyavustajat luovat silmukka-, rekursiivisia ja math.factorial()-versioita lyhyestä kehotteesta. Tarkista aina ehdotus negatiivisen luvun suojalle ja 0!-perustapaukselle.

Tiivistä tämä viesti seuraavasti: