Silnia

0

Silnia
Witam czy jest jakaś opcja rozwiązać problem silni inaczej niż mnożyć liczba za liczbą np. nie wiem coś do kwadratu razy coś do sześcianu razy coś do którejś tam i mieć Od razu wynik a nie mnożyć w pętli tyle kolejnych liczb.

1
Rebus napisał(a):

Witam czy jest jakaś opcja rozwiązać problem silni inaczej niż mnożyć liczba za liczbą

Rebus napisał(a):

nie wiem coś do kwadratu razy coś do sześcianu razy coś do którejś tam

Ale to nadal mnożenie xD

PS: możesz użyć rekurencji, ale też nadal to mnożenie będzie^^

0

No tak ale potrzebuje do dużych liczb jak mam mieć duże paro gigabajtowe wyniki to wolałbym metodę na skrótu. Trzeba ogarnąć jakieś wzory skróconego wielokrotnego mnożenia czy coś. 🤣

0

Nawet jakby było to skomplikowane zawiłe to bym to jakoś ogarnął ale czy coś takiego jest w ogóle byleby dawało dobry wynik a nie jakiś przybliżony czy coś

1

Mam pomysł ale trza sprawdzić czy zadziała, to znaczy zadziała na 100% ale czy będzie szybszy ...:

  • Szukasz liczb pierwszych nie większych niż sqrt(N)
  • Zliczasz pierwsze dzielniki liczby N
  • Metodą szybkiego potęgowania zliczasz 2^x, 3^y, 5^z itd
  • Mnożysz wyniki.
2

Po to wymyślili komputery żeby takie obliczenia wykonywały a nie matematycy na kartkach czy tablicy. Jak nie podoba Ci się przybliżony wzór Stirlinga to wymyśl coś lepszego niż komputer lub matematyk.

0

Jeśli nie, jak wyżej (aproksymacja), to Musisz wykonać nmnożeń, nie da się od tego uciec.

0

Stablicuj wyniki i wrzuć je sobie do cache'a. Ogólnie to trochę mnie dziwi, że nikt nie zwrócił uwagi na najpoważniejszy problem z silnia czyli bardzo szybkie przekraczanie zakresu zmiennych

0

korzystam big intiger mpz_class ogranicza mnie ram. Z sumą jest prosto ostatni wyraz np powiedzmy 5 razy (5+1)/2. suma liczb od 1 do 5. z mnożeniem jest trudniej

1 użytkowników online, w tym zalogowanych: 0, gości: 1