Silnia - komputer 64 bitowy jest w stanie obliczyć max. 20! - trochę mnie to nie satysfakcjonuje - zrobimy, że będzie liczył więcej...
Zacznijmy od standardowego algorytmu wyliczającego silnię
Kod w języku ANSI C operującym na 64 bitowych zmiennych - wiem, nuda - do konkretów przejdę za chwilę ;-)
#include <stdio.h>
int main(void) {
     unsigned long res = 1;
     int num;
     printf("\nEnter factorial value: ");
     scanf("%d", &num);
     for(int i = 2; i <= num; i++) {
          res *= i;
     }
     printf("\n%d! = %ld\n\n", num, res);
     return 0;
}
Powyższa, standardowa metoda jest w stanie wyliczyć 20! (limit CPU - 64 bity)
Brzmi to mało satysfakcjonująco, więc w dalszej części zajmiemy się tym limitem ;-)
Wrzucam zrzut ekranu z podanym max. parametrem dla powyższej metody (większy zrobiłby przepełnienie):
Tak sobie pomyślałem, że dodam pętle i wyświetle wszystkie liczby w zakresie 64 bitowym:
To by było na tyle z 64 bitami, czas przejść do ciekawszej części...
Tu jest mała pokazówka przekroczenia 64 bitów, granice liczenia ustawiłem na 99!
Nie - nie jest to górna granica możliwości, po prostu chciałem, aby każda liczba
mieściła się w jednej linijce ;-)
Jakby ktoś pomysłowy chciał się przyczepić do zer na końcu liczb,
są one wynikiem mnożeń przez liczby mające przeważnie na końcu 0 lub 5 (np. 10 dodaje liczbie jedno 0),
więc wszystko gra, możecie mi zaufać lub sprawdzić na piechotę ;-)