N: get N! (N = 3..100000)
- Forma hexazecimală formatată
- Verificare cu parseInt() din javascript (pentru 3..170):
- Verificare calculând lg(N!) şi inversând rezultatul:
Link-ul get N!
va transmite serverului numărul introdus, iar acesta îl va pasa unei funcţii care a fost scrisă în limbaj de asamblare; ea determină valoarea factorialului acelui număr - operând în binar, nu în baza 10 (şi anume, pe "cifre" de câte 32 de biţi) - şi returnează forma hexazecimală a rezultatului. Operând numai în binar (în baza 2^32, direct în "cod-maşină") - se poate asigura viteza maximă de execuţie; iar forma hexazecimală reflectă cel mai bine reprezentarea internă - încât ea este cel mai convenabil de folosit pentru calcule (forma zecimală servind cel mult pentru afişarea unor rezultate).
Funcţia menţionată poate fi apelată şi direct (prin HTTP GET
): /cgi-bin/amifac.cgi?1234
, sau:
vb@Home:~$ wget http://docere.ro/cgi-bin/amifac.cgi?40 Resolving docere.ro (docere.ro)... 144.76.241.204 Connecting to docere.ro (docere.ro)|144.76.241.204|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 40 [text/html] Saving to: ‘amifac.cgi?40’ vb@Home:~$ cat amifac.cgi?40 8EEAE81B84C7F27E080FDE64FF05254000000000Numărul maxim pentru care se poate obţine factorialul aici, este 10 5 (caz în care timpul de răspuns este sub 5 secunde). Rezultatul returnat astfel poate fi prelucrat în alte programe, cu un limbaj sau altul; aici, "prelucrarea" (în javaScript) constă în formatarea afişării rezultatului hexazecimal primit, aducerea la forma zecimală şi respectiv, verificarea matematică a rezultatului primit de la server.
factorial
':
vezi Cărţile mele (de programare)