Université Abdalmalik Assaadi Année universitaire : 2020/2021
Faculté des Sciences Tétouan SMIA3
Département d’Informatique TD
Série 2
Exercice 1
1. Ecrire u programme qui permet de calculer le factoriel d'un entier N en respectant que
0!=1.
N! = 1*2*3*...* (N-1)*N
a) Utilisez while,
#include<stdio.h>
int i,n,fact=1;
main()
printf("entrer la valeur de n");
scanf("%d",&n);
i=1;
while(i<=n)
fact=fact*i;//ou bien fact*=i;
i++;}
printf("\n %d! = %d",n,fact);
b) Utilisez for.
#include<stdio.h>
int i,n,fact=1;
main()
Université Abdalmalik Assaadi Année universitaire : 2020/2021
Faculté des Sciences Tétouan SMIA3
Département d’Informatique TD
printf("entrer la valeur de n");
scanf("%d",&n);
for(i=1;i<=n;i++)
fact=fact*i;//ou bien fact*=i;
printf("\n %d! = %d",n,fact);
2. Ecrire un programme qui permet de calculer la somme :
1 + 2! + 3! + ⋯ + N!
#include<stdio.h>
int i,n,fact=1,som=0;
main()
printf("entrer la valeur de n");
scanf("%d",&n);
for(i=1;i<=n;i++)
fact=fact*i;//ou bien fact*=i;
som+=fact;//ou bien som=som+fact;
printf("\n somme de factoriel de %d premiers therme est %d",n,som);
}
Université Abdalmalik Assaadi Année universitaire : 2020/2021
Faculté des Sciences Tétouan SMIA3
Département d’Informatique TD
Exercice 2
1. Ecrire un programme qui teste si un nombre entier est premier ou non.
#include<stdio.h>
int n,i;
main()
{
printf("entrer le nombre n");
scanf("%d",&n);
i=2;
while (i<n/2&&n%i!=0)
i++;
if(n%i==0)
printf("%d n'est pas premier",n);
else //cad i>=n/2, on a pas trouvé un diviseur
printf("%d est premier",n);
}
2. Modifier le programme pour qu’il affiche :
a. Tous les nombres premiers inférieurs à 10000.
#include<stdio.h>
int n,i;
main()
{
printf("2\n"); // le nombre 2 est premier
for(n=3;n<10000;n++)/*puisque la valeur initiale de i est 2 si on
commence de n=2, 2 va etre non premier*/
{
i=2;
while (i<n/2&&n%i!=0)
i++;
if(n%i!=0) //si on sort de la boucle sans trouver un diviseur de n
printf("%d \n",n);
}
}
b. La somme des nombres premiers inférieurs à 10000.
#include<stdio.h>
int n,i,som;
main()
{
Université Abdalmalik Assaadi Année universitaire : 2020/2021
Faculté des Sciences Tétouan SMIA3
Département d’Informatique TD
som=2;// som est initialisé à 2 car le nombre 2 est premier
for(n=3;n<1000;n++)/*puisque la valeur initiale de i est 2 si on commence
de n=2 2 va etre non premier*/
{
i=2;
while (i<n/2 && n%i!=0)
i++;
if(n%i!=0)//si on sort de la boucle sans trouver un diviseur de n
som+=n; //ou bien som=som+n;
}
printf("la somme des nombres premers inferieur à 10000 est %d",som);
}
Exercice 3
Ecrivez un programme qui lit N nombres entiers au clavier et qui affiche leur somme, leur produit et leur
moyenne. Choisissez un type approprié pour les valeurs à afficher. Le nombre N est à entrer au clavier.
La première méthode avec tableau : on utilise tableau pour enregistrer les differents nombres avant
de les utiliser.
#include<stdio.h>
int n,i, T[60],som=0,prod=1; //on utilise tableau pour enregistrer les valeur
float moy;
main()
printf("entrer le nombre d'elements");
scanf("%d",&n);
for(i=1;i<=n;i++)/*puisque la valeur initiale de i est 2 si on commence
de n=2 2 va etre non premier*/
printf("entrer le %d eme elements",i);
scanf("%d",&T[i]); // les differents elements sont enregistrés
som+=T[i]; //ou bien som=som+n;
prod*=T[i];//ou bien prod=prod*n;
Université Abdalmalik Assaadi Année universitaire : 2020/2021
Faculté des Sciences Tétouan SMIA3
Département d’Informatique TD
moy=(float)som/n;
printf("\n la somme des %d nombres saisis est %d",n,som);
printf("\n le produit des %d nombres saisis est %d",n,prod);
printf("\n la moyenne des %d nombres saisis est %.2f",n,moy);
2éme méthode : on utilise une seule vatriable nommé A pour enregistrer chaque valeur saisie, on
l’ajoute directement à la somme et on la,mutiplie par produit et apres lorsque on saisie une autre
valeur cette valeur est écrasée.
Si par exemple les valeurs à saisir sont 11, 5,4.
Pour la première itération :
11 Som=som+A=0+11=11
A Prod=prod*A=1*11=11
Pour la deuxième itération :
5 Som=som+A=11+5=16
A Prod=prod*A=11*5=55
La valeur de A qui a été égale à 11 est écrasé et la valeur de A est devenue égale à 5
Pour la troisième itération :
4 Som=som+A=16+4=20
A Prod=prod*A=55*4=220
La valeur de A qui a été égale à 5 est écrasé et la valeur de A est devenue égale à 4.
Université Abdalmalik Assaadi Année universitaire : 2020/2021
Faculté des Sciences Tétouan SMIA3
Département d’Informatique TD
#include<stdio.h>
int n,i,A,som=0,prod=1;
float moy;
main()
printf("entrer le nombre d'elements");
scanf("%d",&n);
for(i=1;i<=n;i++)/*puisque la valeur initiale de i est 2 si on commence
de n=2 2 va etre non premier*/
printf("entrer le %d eme elements",i);
scanf("%d",&A);
som+=A; //ou bien som=som+n;
prod*=A;//ou bien prod=prod*n;
moy=(float)som/n;
printf("\n la somme des %d nombres saisis est %d",n,som);
printf("\n le produit des %d nombres saisis est %d",n,prod);
printf("\n la moyenne des %d nombres saisis est %.2f",n,moy);
Exercice 4
Calculez le N-ième terme UN de la suite de FIBONACCI qui est donnée par la relation de
récurrence:
U1=1
U2=1
UN=UN-1 + UN-2 (pour N>2)
#include<stdio.h>
int n,Un,U,V;
main()
{
Université Abdalmalik Assaadi Année universitaire : 2020/2021
Faculté des Sciences Tétouan SMIA3
Département d’Informatique TD
printf("entrer les valeurs de a, b et c\t");
scanf(" %d",&n);
if(n==0)
Un=1;
else if (n==1)
Un=1;
else
{
V=1; //la valeur initiale de Un-2 pour n=2 c la valeur de U0
U=1; //la valeur initiale de Un-1 pour n=2 c la valeur de U1
for(int i=2;i<=n;i++)
{
Un=U+V; // U represente Un-1 et V represente Un-2
V=U; /*pour preparation à l'iteration suivante la nouvelle Un-2 sera égale à Un-1
actuelle*/
U=Un; /*pour preparation à l'iteration suivante la nouvelle Un-1 serav égale à Un
actuelle*/
}
}
printf("le %d eme therme de la serie de fibonacci est %d",n,Un);