Université de Nice-Sophia Antipolis POLYTECH
PeiP2 2017–2018
Examen de Algorithmique et Struct. de Données
Durée : 0h30
Aucun document autorisé
Mobiles interdits Nom : Prénom :
I 1. Expliquez ce que calcule la fonction récursive mystèresuivante ? p r i v a t e S t r i n g m y s t è r e (i n t n , i n t c a n d ) {
i f ( n = = 1 ) r e t u r n " 1 ";
i f ( n % c a n d == 0)
r e t u r n c a n d + " ␣ x ␣ " + m y s t è r e ( n / cand , c a n d );
r e t u r n m y s t è r e ( n , c an d + 1 ) ; }
p u b l i c S t r i n g m y s t è r e (i n t n ) { a s s e r t n >0;
r e t u r n m y s t è r e ( n , 2);
}
et qu’affiche le code suivant ? i n t n = 24;
S y s t e m . out . p r i n t l n ( n + " ␣ = ␣ " + m y s t è r e ( n ));
/*
* A n t é d é d e n t : n >0 et cand >=2
*/
S t r i n g m y s t è r e (i n t n , i n t c a n d ) { a s s e r t cand > = 2 ;
i f ( n = = 1 ) r e t u r n " 1 "; i f ( n % c a n d == 0)
r e t u r n c a n d + " ␣ x ␣ " + m y s t è r e ( n / cand , c a n d );
r e t u r n m y s t è r e ( n , ca n d + 1 ) ; }
/* *
* A n t é d é d e n t : n >0
* R ô l e : r e n v o i e la d é c o m p o s i t i o n de n en f a c t e u r s p r e m i e r s
*/
S t r i n g f a c t e u r s P r e m i e r s R (i n t n ) { a s s e r t n >0;
r e t u r n m y s t è r e ( n , 2);
}
Cette fonction affiche la décomposition d’un nombre entier ses facteurs pre- miers. L’exécution du code précédent affiche sur l’entrée standard :
24 =2 x 2 x 2 x 3 x 1
Notez que l’antécédent de cette fonction est :n >0.
1
. . . . I 2. Écrivez une version itérative de la fonction précédente.
/* *
* A n c é d é d e n t : n >0
* R ô l e : r e n v o i e la d é c o m p o s i t i o n de n en f a c t e u r s p r e m i e r s
*/
S t r i n g f a c t e u r s P r e m i e r s (i n t n ) { S t r i n g res =" ";
i n t n b P r e m i e r =2;
w h i l e ( n >1) {
i f ( n % n b P r e m i e r == 0) {
//nbPremier est un facteur premier res += n b P r e m i e r + " ␣ x ␣ ";
n /= n b P r e m i e r ; }
e l s e
n b P r e m i e r ++;
}
//nbPremier == 1;
r e t u r n res + " 1 "; }
. . . .
2