Cifre dei fattoriali

nino_12
- Come calcolare il numero delle cifre di $ N! $ per N molto grandi (es. 1.000.000 o 1.000.000.000)?

- Posto $ N_c $ il numero delle cifre del fattoriale $ N! $, a quale valore tende la parte decimale del rapporto $ N_c/N $ (per N potenze di 10) ?

Risposte
axpgn
"nino_":
- Come calcolare il numero delle cifre di $ N! $ per N molto grandi (es. 1.000.000 o 1.000.000.000)?


Se vuoi posso dirti quanti zeri ha (tra la virgola e l'ultima cifra significativa a destra) ... di più, non so ... :D
Cioè, per esempio, $100!$ ha $24$ zeri o equivalentemente è un numero intero la cui cifra delle unità è diversa da zero moltiplicato per $10^24$.

Cordialmente, Alex

nino_12
Forse non sono stato chiaro.
Non si chiede il valore esatto dei fattoriali grandi, e neppure la sua approssimazione (calcolabile con la formula di Stirling);
ma solo il numero delle cifre.

Esempio:
10! = 3.628.800 -----> 8 cifre -----> $ N_c/N = 0,7 $
100! = 9,3326E+157 -----> 158 cifre -----> $ N_c/N = 1,58 $
1000! = (non ci interessa) -----> 2568 cifre -----> $ N_c/N = 2,568 $
10.000! -------------------------------> $ N_c/N = ? $
100.000! ---------------------------------> $ N_c/N = ? $
ecc...

axpgn
Ho capito benissimo quello che chiedi ... ma io ti fornisco solo gli zeri ... :-D

axpgn
Ripensandoci, il numero di cifre di $N!$ dovrebbe essere, approssimativamente, $log_(10) (N!)$.
Se ci mettiamo la formula di Stirling diventa $log_(10) [sqrt(2piN)(N/e)^N]$ e poi ... ci penserò ... :D

nino_12
"axpgn":
Ripensandoci, il numero di cifre di $N!$ dovrebbe essere, approssimativamente, $log_(10) (N!)$.
Se ci mettiamo la formula di Stirling diventa $log_(10) [sqrt(2piN)(N/e)^N]$ e poi ... ci penserò ... :D


:smt023


al_berto
Conosco poco i fattoriali!
Pongo alcune domande:
10.000!...............$N_c/N = 3,566$ E' corretto?
Si possono sapere le prime diciamo..... $ 60 $ cifre di 10.000! ?
10! è composto da 7 cifre o 8?
Grazie.

nino_12
Le cifre di 10000! sono 35659.

Come ho scritto sopra, 10! = 3628800, quindi sono 7 cifre.

al_berto
@ nino
Ti ringrazio.
Ho fatto quelle domande perchè come ho scritto ci capisco poco nei vettoriali, però mi diverto a fare dei programmini con il P.C.e ho provato a farne uno.
Fino a 1000! ha funzionato bene confrontando con i tuoi dati.
Ma a 10000! mi dà 35660 cifre, una in più.
Il programma me le stampa tutte, ma le prime 60 sono:
284.625.968.091.705.451.890.641.321.211.986.889.014.805.140.170.279.923.079.417

Se vuoi provare con 10500! a me dà 37665 cifre, le prime sono:
638.657.888.336.003.688.521.901.736.176.698.301.177.343.645.246.986.734.895.545
Grazie ancora.

nino_12
"al_berto":

Ma a 10000! mi dà 35660 cifre, una in più.


Hai ragione! :smt023
Sono 35660 cifre, non 35659... non avevo arrotondato in eccesso.

Io non so programmare, al limite uso excel...

E' giusto anche 10500!, sono 37665 cifre.

Ma con il tuo programma, fino a quale valore di N riesci a calcolare il fattoriale (o di quante cifre è composto)?

al_berto
Dovrebbe dipendere esclusivamente dalla velocità di calcolo del computer e quindi dal tempo impiegato. Per trovare e stampare il fattoriale di 10000! e il numero 35660 ci ha impiegato circa 2 minuti.
Per stampare il numero di cifre non ci dovrebbero essere problemi anche per numeri più grandi, a parte il tempo impiegato.
Per stampare tutte le cifre del fattoriale, dovrei aggiungere qualche comando per farlo andare a capo una volta raggiunto il margine della pagina.
E' un programmino di dieci righe in linguaggio Just Basic. Il Basic è uno dei più vecchi (assieme al Pascal) linguaggi di programmazione. Il Just Basic si può scaricare free on line e si trova anche il manuale.
Buonanotte.

axpgn
Ma cosa usi per trattare numeri grandi? Non credo che il basic (ma neppure altri linguaggi, diciamo, "standard") sia in grado di trattare numeri così grandi senza l'ausilio di librerie aggiuntive ... e non penso che dieci righe siano sufficienti per elaborare " elaborati" trattamenti numerici ... ;-)

nino_12
In Basic il numero delle cifre si trova facilmente e in tempi ragionevoli penso fino a N = 1 miliardo o anche più, ad esempio così:

For i=2 to 1000000000
Nc= Nc + Log(i)
Next i
Ncifre= int(Nc/Log(10) + 1)

Ma il quiz chiedeva di determinare il numero delle cifre senza la forza bruta.
Inoltre, era chiesto anche di trovare a quale valore tende la parte decimale di N_c/N per N potenze di 10.

al_berto
@axpgn
Mah, quello si può fare l'hai visto.
@nino
Sì il programma è simile al mio, il tuo è con meno righe.
Chiedo scusa per "la forza bruta" e, sì forse sono andato un po' fuori dal semionato :D
Ciao a tutti.

axpgn
"al_berto":
Mah, quello si può fare l'hai visto.

L'ho visto, ma continua a sembrarmi strano che il basic riesca a fare "normalmente" moltiplicazioni "precise" di migliaia di cifre ... :?
Qui ci vorrebbe stan ... :D

Cordialmente, Alex

al_berto
Non so che dirti.
Penso che continuerà a sembrarti strano...se vuoi fare qualche prova...
(Ho visto che mi sono mangiato un "che si" :-D)

axpgn
"al_berto":
... se vuoi fare qualche prova...

Già fatta :-D
Sì, ho visto che effettivamente calcola dei fattoriali lunghissimi, però a me va in overflow molto prima di diecimila e poi dopo il mille va lentissimo ... (forse perché glieli sto facendo calcolare tutti ... :-D)

Cordialmente, Alex

al_berto
OK
Ho visto che il tuo Sistema Operativo, è migliore del mio.
Io poi ho( 2.00 GHz - RAM 2.00 Gb ).
Anche io gliele faccio stampare tutte le cifre.
Probabilmente è il programma usato che fa fare calcoli inutili o ripetuti.
ciao

axpgn
Ho usato il programma per calcolare i fattoriali fornito col sw

Cordialmente, Alex

nino_12
N ............ N_c/N ..............N_c/N/log(N)
10 ............... 0,7 ...................0,7
100 ............ 1,58 .................0,79
1000 ........... 2,568 ..............0,856
10000 ..........3,566 ...............0,8915
100000 ........ 4,56574 ..........0,9131
1000000 ...... 5,565709 .........0,9276

Si può vedere che i decimali convergono a 5657... e quindi 1.000.000.000! avrà circa 8.565.700.000 cifre.

al_berto
"nino_":
Si può vedere che i decimali convergono a 5657... e quindi 1.000.000.000! avrà circa 8.565.700.000 cifre.

OK, grazie per la risoluzione completa.
Nessuno aveva ancora risposto a questa parte della domanda.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.