C L A S S E D E S E C O N D E A C T I V I T É S A L G O R I T H M I Q U E . A L G O B O X DECOMPOSITION D’UN ENTIER EN PRODUIT DE FACTEURS PREMIERS. Par exemple on veut décomposer 126 en produit de facteurs premiers. 1. Rappel de la méthode. 1 2 6 2 6 3 3 2 1 3 7 7 1 Donc : 126 = 21 × 32 × 71 2. Remarque. Chacun des diviseurs précédents (2, 3 et 7) sont des nombres premiers et ce sont les seuls qui nous intéressent ici. Il est évident qu’il y a d’autres diviseurs de 126 : 6, 14, 18,……, 63 mais ces diviseurs ne sont pas premiers ! Remarquons que 63 = 126 ÷ 2 et donc qu’il n’y a pas d’autres diviseurs de 126 entre 63 et 126. La recherche des diviseurs premiers de 126 se fera entre 2 et 63. 3. Conséquence : n n , ou la partie entière de lorsque 2 2 n n n n’est pas pair (la commande Algobox pour obtenir la partie entière de est floor ( )) 2 2 La recherche des diviseurs premiers d’un nombre entier n se fera entre 2 et Exemple : si n = 247, alors 247 ÷ 2 = 123,5 dont la partie entière est 123. Les diviseurs premiers de 247 se chercheront donc entre 2 et 123. 4. Cas général. 4.1 Comment ne mettre en évidence que les diviseurs premiers ? On commence par diviser par 2 (si le nombre est pair) et on continue de diviser par 2 tant que le nombre obtenu est pair (le reste est 0) Ensuite on passe au nombre suivant qui est 3, et on opère de la même façon : on divise par 3 tant que la division par 3 a pour reste 0 (la commande Algobox correspondante est (n%3 = = 0)) 4.2 Et les diviseurs suivants ? Le diviseur suivant ne sera pas 4 car 4 = 2 2 et que toutes les divisions par 2 ont déjà été effectuées. Le diviseur suivant sera donc 5, qui est premier. Et ainsi de suite jusqu’à la partie entière de n n . ( floor ( ) ) 2 2 Classe de 2nde Algobox : décomposition d’un entier en produit de facteurs premiers. 1 www.maths-learning.fr 4.3 Présentation du résultat. ultat. Il suffira de demander de faire lee produit prod des diviseurs premiers affectés de l’exposantt corre correspondant au nombre de fois que chacun d’eux est apparu. paru. 5. Algorithme avec vec Algobox. A 5.1 Déclaration de la variable riable. n EST_DU_TYPE_NOMBRE Remarque : La valeur de n sera affichée chée à la fin de l’algorithme, et sa valeur ur initiale init doit être protégée. Ainsi on utilise la variable a qui prendra d’abord la valeur de n initiale et dont la valeur va varier au cours rs de l’algorithme. diviseur EST_DU_TYPE_NOMBRE E nbfacteurs EST_DU_TYPE_NOMB BRE a EST_DU_TYPE_NOMBRE puissance EST_DU_TYPE_NOMBR RE 5.2 Début de l’algorithme. • Demander à lire n • Puis afficher sa valeur et afficher affi le message « = » • Indiquer que a prend laa valeur valeu n. • Indiquer que nbfacteurs prend la valeur 0 (c’est normal on n’a encore fait au aucun calcul) Maintenant il nous faut indiquerr que l’on l va tester les diviseurs allant de 2 à n 2 On va donc utiliser l’onglet POUR…. …. • diviseur va de 2 à la partie entière de n 2 (revoir la commande si besoin). Comprenons ce qui va se passer : Si le reste de la division de a par div iviseur (on commence ici par 2) est égal à 0, c’est st que diviseur (donc 2 ici) est un des facteurs recherché. Alors dans ce cas : nbfacteurs (qui vaut initialement ent 0), 0 prend la valeur nbfacteurs + 1 puissance va prendre la valeurr 1 (puisque (pu l’on en est au premier facteur qui a cette valeur de diviseur) a prend la valeur a / diviseur On obtient quelque chose commee ceci (à compléter) Ceci étant : TANT_QUE le reste de la division d par diviseur est nul, c’est que le nombre re se divise encore par ce diviseur, ce qui augmente de 1 la valeur v de la puissance à chaque fois. Quant à a, il va prendre à chaquee fois la valeur a / diviseur 2 C L A S S E D E S E C O N D E A C T I V I T É S A L G O R I T H M I Q U E . A L G O B O X On va donc utiliser l’onglet TANT_Q NT_QUE et y indiquer toutes ces contraintes. Cela donnera nnera quelque chose comme cela : Il est temps maintenant de préparer arer la présentation du résultat. On introduit une condition sur lee nombre nom de facteurs. S’il est supérieur à 1, chacun dess facteurs facte correspond à un diviseur de n élevé à une puiss sance (cette puissance correspondant au nombre d’apparition aritions de ce diviseur) Ainsi, en dessous de FIN_TANT_QUE E on introduit SI (nbfacteurs > 1) ALORS Cela donnera ceci : En dessous de DEBUT_SI, on affiche ffichera le massage « * » En dessous de FIN_SI on affichera : • diviseur • «^» • puissance Puis il nous faut envisager le cass où il n’y a pas de facteurs (parce que n est un nombree premier prem !) Dans ce cas on affichera n, tout simplement. simpl Et cela termine notre algorithme. Voir le corrigé dans le fichier Algobo box : facteurs_premiers. Classe de 2nde Algobox : décomposition d’un entier en pro produit de facteurs premiers. 3 ww www.maths-learning.fr