prova ad usare %e al posto di %f
edit:
ho provato con:
printf("%d\t%-2.2e\n",N, n);
Come risultato ottengo:
codice:
...
12 4.79e+008
13 6.23e+009
14 8.72e+010
15 1.31e+012
16 2.09e+013
17 3.56e+014
18 6.40e+015
19 1.22e+017
20 2.43e+018
21 5.11e+019
22 1.12e+021
...
Ecco, usando double come suggerito e %e arrivo fino a 170:
codice:
#include<stdio.h>
int main()
{
double n = 1;
unsigned long N = 1;
while(N <= 175){
n*=N;
printf("%u\t%2.2e\n",N, n);
//sleep(1);
N++;
}
}
codice:
...
167 1.50e+300
168 2.53e+302
169 4.27e+304
170 7.26e+306
171 1.#Je+000
172 1.#Je+000
173 1.#Je+000
174 1.#Je+000
175 1.#Je+000