Vous êtes sur la page 1sur 3

ALGORITHME ET PROGRAMMATION

Prof : Mme HAMMAMI BAHLOUL Awatef BAC2023

Problème1 : (bac 2015)


Un nombre M est dit nombre premier sûr, s’il est un nombre premier de la forme 2*p+1 avec p un nombre
premier.
Exemples :
• Si M=11, alors M est un nombre premier sûr. En effet, 11 est premier et il peut s’écrire sous la forme
2*p+1 où p=5 est un nombre premier.
• Si M=31, alors M n’est pas un nombre premier sûr. En effet, 31 est premier et il peut s’écrire sous la
forme 2*p+1 où p=15 qui n’est pas un nombre premier.

NB : un nombre entier supérieur à 1 est dit premier s’il n’est divisible que par 1 et par lui-même.
On se propose d’écrire un programme qui permet de :
1- Remplir un tableau T par N entiers strictement supérieurs à 1 et distincts (avec 10<=N<45).
2- Trier dans l’ordre croissant les éléments premiers sûr du tableau T suivis du reste des éléments sans
tri.
3- Afficher le tableau T résultant.

Exemple : pour N=10 et le tableau T suivant :


T 5 25 59 23 13 47 31 100 7 107
Le programme affichera le contenu du tableau suivant :
T 5 7 23 47 59 107 25 13 31 100

Eléments premiers sûrs triés Eléments non premiers sûrs


dans un ordre croissant

Correction Problème (BAC 2015) T. D. N. T.


Algorithme pp type

Début Tab = Tableau de 44 entiers


Saisir( n) T. D. O. G.
Remplir( T, n ) Objet Nature / Type
tri ( T, n ) n entier
affiche (T, n) T Tab
Fin Saisir Procédure
************************************* Remplir Procédure
tri Procédure
Procédure Saisir( @ n : entier)
affiche Procédure
début
Répéter
Écrire ("n= ")
Lire ( n )
jusqu’à 10<=n<45
Fin

*************************************
ALGORITHME ET PROGRAMMATION
Prof : Mme HAMMAMI BAHLOUL Awatef BAC2023
Procédure Remplir(@ T : Tab, n : entier )
Début T. D. O. L.
Répéter Objet Nature / Type
Écrire ("t[1]= ") i entier
Lire (T[1]) recherche fonction/booléen
Jusqu’à T[1]>1
Pour i de 2 à n faire
Répéter
Écrire ("t[i]= ")
Lire (T[i])
Jusqu’à T[i]>1 et recherche(t[i],T, i-1)=Faux
Fin pour

Fin
Fonction recherche(x :entier, T : Tab, p :entier ) : booléen
Début
test  faux
T. D. O. L.
i1
Objet Nature / Type
répéter
si x=T[i] alors j entier
test booléen
test  vrai
sinon
ii+1
finsi
jusqu’à test=vrai ou i>p
retourner test
fin
********************************************
procédure tri( @T : Tab, n :entier ) T. D. O. L.
Début
Objet Nature / Type
Découpage(T,n,T1,T2,n1,n2) Découpage procédure
Trier(T1,n1) Trier procédure
Assemblage(T,n,T1,T2,n1,n2) assemblage procédure
fin

********************************************
Procédure trier(@ t1 : Tab, n1 : entier ) T. D. O. L.
Début Objet Nature / Type
Répéter i Entier
PermutFaux
aux Entier
Pour i de 1 à n1-1 faire
permut booléen
Si t1[i]>t1[i+1] alors
Auxt1[i]
t1[i]t1[i+1]
t1[i+1]aux
permutVrai
fin si
fin pour
Jusqu’à permut=Faux
fin
ALGORITHME ET PROGRAMMATION
Prof : Mme HAMMAMI BAHLOUL Awatef BAC2023
*******************************************
Procédure Découpage(t :tab, n :entier, @t1,t2 :tab, @n1,n2 :entier)
T. D. O. L.
Début
Objet Nature / Type
n10
n20 i Entier

Pour i de 1 à n faire premier Fonction/booléen


Si premier(t[i]) et premier((t[i]-1) div 2) alors
n1n1+1
t1[n1]t[i]
sinon
n2n2+1
t2[n2]t[i]
fin si
Fin pour
fin
*******************************************
Procédure Assemblage(@t :tab,n :entier, t1,t2 :tab, n1,n2 :entier)
T. D. O. L.
Début
Objet Nature / Type
Pour i de 1 à n1 faire
t[i]t1|i] i,j entier
Fin pour
j1
Pour i de n1+1 à n faire
t[i]t2[j]
jj+1
Fin pour
fin
*******************************************
Procédure affiche(T : tab , n : entier )
T. D. O. L.
Début
Objet Nature / Type
Pour i de 1 à n faire
Ecrire(T[i]) i entier
Fin pour
Fin
*******************************************

Fonction premier (x ::entier ) : booléen


Début
nd0
Pour i de 1 à x faire T. D. O. L.
Si x mod i =0 alors Objet Nature / Type
ndnd+1 i, nd entier
Fin si
Fin pour
Retourner nd
fin

Vous aimerez peut-être aussi