Ciao a tutti!
Ho la necessità di realizzare un programmino che mi calcoli il coefficiente binomiale di due numeri ( http://it.wikipedia.org/wiki/Coefficiente_binomiale ).
Il mio problema è che tipo di dato usare, visto che il fattoriale di un numero abbastanza basso, come per esempio 15 vale troppo!
15! = 1 307 674 368 000
Un intero non basta, un long int nemmeno...avete idee?
Intanto vi posto il codice se volete provare!
codice:
/***************************/
/*Inclusione delle librerie*/
/***************************/
#include <stdio.h>
#include <stdlib.h>
/******************************/
/*Dichiarazione delle funzioni*/
/******************************/
long int fattoriale(long int num);
int calcola_coeff_bin(int nodi_sottografo, int nodi);
/*********************************/
/*Definizione della funzione main*/
/*********************************/
int main()
{
int n,k,ris;
printf("Inserisci N...\n");
scanf("%d", &n);
printf("Inserisci K...\n");
scanf("%d", &k);
calcola_coeff_bin(k,n);
}
/***************************************/
/*Definizione della funzione fattoriale*/
/***************************************/
/*funzione che calcola il fattoriale di un numero*/
long int fattoriale(long int num)
{
int fatt;
if(num == 0)
fatt = 1;
else
fatt = num * fattoriale (num - 1);
return (fatt);
}
/**********************************************/
/*Definizione della funzione calcola_coeff_bin*/
/**********************************************/
/*funzione che calcola il coefficiente binomiale*/
int calcola_coeff_bin(int k, int n)
{
int coefficiente,
tmp1, tmp2, tmp3;
tmp1 = fattoriale(n);
printf("Fattoriale n: %d\n", tmp1);
tmp2 = fattoriale(k);
printf("Fattoriale k: %d\n", tmp2);
tmp3 = fattoriale(n - k);
printf("Fattoriale (n - k): %d\n", tmp3);
coefficiente = tmp1/(tmp2 * tmp3);
printf("Coefficiente binomiale: %d\n", coefficiente);
return(coefficiente);
}