Ecrire un programme qui définit et utilise :
– une fonction fact(n) qui renvoie la factorielle du nombre n.
– une fonction affiche fact(n) qui ne renvoie rien et affiche la factorielle du nombre n.
– une fonction comb (int n , int p) qui renvoie le nombre de combinaisons de p éléments parmi n
– une fonction est_Divisible( a, b) qui renvoie 1 si a est divisible par b
– une fonction est_Premier(n) qui renvoie 1 si a est premier
Rappels :
– factorielle(n) = n!= n (n-1) (n-2) ...1.
– un nombre entier n est dit ”premier” s’il n’existe aucun entier d dans l’intervalle [2,n?1] tel que n soit divisible par d.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
#include #include /? Ecriture et utilisation de fonctions?/ /? prototypes de fonctions?/ int somme (int x,int y); /? renvoie la somme de 2 ´el´ements?/ int fact (int n); /? n!?/ void a?che fact(int n); /? a?chage de n!?/ int comb (int n , int p); /? renvoie le nombre de combinaisons de p elements parmi n?/ int estDivisible(int a, int b) ; /? renvoie 1 si a est divisible par b?/ int estPremier(int n) ; /? renvoie 1 si a est premier?/ /?fonction principale)?/ int main () { int n,p,r; /? lectures de n et p?/ printf(”entrez un entier\n”); scanf(”%d”, &n); printf(”entrez un entier inf´erieur au precedent\n”); scanf(”%d”, &p); /? a?chage de la somme de n et p sans la ranger dans une variable?/ printf(”la somme de %d et %d est %d\n”, n,p,somme(n,p)); /? calcul de la somme de n et p rangement dans r et a?chage?/ r=somme(n,p); printf(”la somme de %d et %d est toujours %d\n”, n,p,r); /? a?chage de fact(n) en utilisant la fonction d’a?chage ?/ a?che fact (n); /?a?chage de fact(n) en appellant fact(n) et en rangeant le r´esultat ?/ r=fact(n); printf(”la factorielle de %d est %d\n”, n ,r); /? a?chage du nombre de combinaisons de p objets parmi n?/ printf( ”le nombre de fa¸cons de prendre %d valeurs (non ordonn´ees) parmi %d\n”, p,n); printf(”est %d\n”, comb(n,p)); /? le nombre de combinaisons de p objets parmi n est il premier ??/ if (estPremier( comb(n,p) ) ) printf(”ce nombre est premier\n”); else printf(”ce nombre n’est pas premier\n”); return EXIT SUCCESS; }/?d´e?nitions des fonctions)?/ int somme (int x,int y) { return x + y; } int fact (int n) { int i, res = 1; for (i = 1; i<=n; i = i + 1) res = res?i; return res; } void a?che fact(int n) { int i, res = 1; for (i = 1; i<=n; i = i + 1) res = res?i; printf(” %d != %d\n”,n, res); return ; } int comb (int n , int p) { return ( fact(n) / ( (fact(p)? fact(n?p)) ) ); } int estDivisible(int a, int b) { if (a%b == 0) return 1; else return 0; } int estPremier(int n) { int i; for ( i =2; i< n?1; i = i + 1) if (estDivisible(n,i)) return 0; return 1; }//entrez un entier inf´erieur au precedent //4 //la somme de 5 et 4 est 9 //la somme de 5 et 4 est toujours 9 // 5 != 120 //la factorielle de 5 est 120 //le nombre de fa¸cons de prendre 4 valeurs (non ordonn´ees) parmi 5 //est 5 //ce nombre est premier // //td5.2 ex1 2 3 has exited with status 0. |