Byłem ciekaw jak sprawę poprawi szybkie potęgowanie
pisałem je tak by zapotrzebowanie na pamięć nie przekroczyło 2 X wynik
Kopiuj
11 ^ 1'000'000 =
000000484348796603303484786492117176320313430499285088952841377983272364419533504 ...
051540601767795728152927732305998507662430620974595565462379530888550684460000001 (1'041'399 cyfr)
104'499 jedynek, 3'661'797'061 mnożeń
Process returned 0 (0x0) execution time : 217.234 s
czyli 2 minuty 37 sekund
Sprawdziłem ile wykonywanych jest mnożeń pojedynczej precyzji
obliczając 11 ^ 100'000 naiwnym potęgowaniem było 72'319'402, szybkim 67'730'176
teraz obliczenia trwały 1.86 zamiast 9.84 sek.
minimalne zmniejszenie liczby mnożeń nie tłumaczy przyśpieszenia
też liczę przy podstawie miliard, ale mnożenie "wielka" * "wielka" zrobiłem wydaj mnie mi się dość dowcipnie
w szybkim potęgowaniu potrzebne jest podnoszenie do kwadratu,
wyniki podałem przed napisaniem "kwadratowienia", a da się w nim urwać prawie połowę roboty
program dalej samodzielny, ale dramatycznie mi się rozrósł, ma 70 linijek.
wydaje mi się, że OP ma szansę doczekać się wyniku dla 11 ^ 2'000'000'000
może na emeryturze, ale zawsze :-)
---- [ edit ] ---------------------------------------------------
dodałem kwadratowienie, program urósł do 90 linijek,
11 ^ 100'000 - liczba mnożeń 48'565'162, czas 1.48 sek.
11 ^ 200'000 czas 5.59 s
11 ^ 300'000 czas 9.14 s
11 ^ 400'000 czas 21.84 s
11 ^ 1'000'000 czas 165.58 s
11 ^ 2'000'000'000 czas 25 lat
Ideone w prawie 5 sek. potrafi policzyć jedynki w 11 ^ 365'000