Eléments de Programmation - Thème 9

Documents pareils
TP 1. Prise en main du langage Python

Représentation d un entier en base b

Licence Sciences et Technologies Examen janvier 2010

Algorithmique et Programmation, IMA

Recherche dans un tableau

STAGE IREM 0- Premiers pas en Python

Encryptions, compression et partitionnement des données

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Editer un script de configuration automatique du proxy

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Initiation à la programmation en Python

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Définitions. Numéro à préciser. (Durée : )

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Formats d images. 1 Introduction

EXERCICES - ANALYSE GÉNÉRALE

1 Recherche en table par balayage

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Présentation du langage et premières fonctions

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

TP3 : Manipulation et implantation de systèmes de fichiers 1

Plateforme PAYZEN. Définition de Web-services

Chp. 4. Minimisation d une fonction d une variable

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Cours 1 : Qu est-ce que la programmation?

La recherche avec l interface COLLEGE

DM 1 : Montre Autoquartz ETA

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Initiation à la Programmation en Logique avec SISCtus Prolog

Cours: Administration d'une Base de Données

Par combien de zéros se termine N!?

UNE EXPERIENCE, EN COURS PREPARATOIRE, POUR FAIRE ORGANISER DE L INFORMATION EN TABLEAU

Python - introduction à la programmation et calcul scientifique

2 Comment fonctionne un ordinateur, dans les grandes lignes

Étude de l application DNS (Domain Name System)

Université Paris-Dauphine DUMI2E 1ère année, Applications

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Cours d Analyse. Fonctions de plusieurs variables

Utilisation d objets : String et ArrayList

Découverte de Python

Bases de programmation. Cours 5. Structurer les données

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Définition des Webservices Ordre de paiement par . Version 1.0

Introduction au Data-Mining

Programmation Web. Madalina Croitoru IUT Montpellier

Transmission d informations sur le réseau électrique

Baccalauréat technologique Série : sciences et technologies du management et de la gestion (STMG)

Programmation C++ (débutant)/instructions for, while et do...while

WHITE PAPER. Quels avantages la déduplication offre-t-elle aux entreprises? Livre blanc Acronis

Conférence et partage avec NetMeeting

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Leçon 01 Exercices d'entraînement

Le langage SQL (première partie) c Olivier Caron

Vérification de programmes et de preuves Première partie. décrire des algorithmes

Module d anonymisation

Le langage C. Séance n 4

«clustering» et «load balancing» avec Zope et ZEO

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Programmation linéaire

I. Introduction aux fonctions : les fonctions standards

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile


IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Guide d installation en 10 étapes...

KWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO

Manuel utilisateur Portail SAP

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Image d un intervalle par une fonction continue

Stockage du fichier dans une table mysql:

Programme Compte bancaire (code)

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Licence d Utilisation des Produits Pléiades attribués à Tarif Préférentiel aux Utilisateurs Institutionnels Autorisés

Architecture des Systèmes d Information Architecture des Systèmes d Information

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Notions fondamentales du langage C# Version 1.0

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Sécurité Informatique

IPS-Firewalls NETASQ SPNEGO

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Une ergonomie intuitive

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Introduction à MATLAB R

ils entretiennent entre eux des flux, ils partagent des perceptions sur l environnement

Paginer les données côté serveur, mettre en cache côté client

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Refonte front-office / back-office - Architecture & Conception -

Guide d installation

Electricité : caractéristiques et point de fonctionnement d un circuit

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Transcription:

Eléments de Programmation - Thème 9 Equipe enseignants 1i-001 UPMC Licence 1 2014/2015 Table des matières Exercice 1 : Différence symétrique 1 Exercice 2 : Traduction 2 Exercice 3 : Magasin en ligne 4 Exercice 4 : Répétitions dans les listes 6 Exercice 5 : Statistiques sur les lettres 8 Exercice 6 : Décomposition en facteurs premiers 11 Exercice 1 : Différence symétrique Dans le cours, nous avons introduit : l union de deux ensembles : l opérateur de Python l intersection de deux ensembles : l opérateur & la différence entre deux ensembles : l opérateur - Dans cet exercice, nous construisons une nouvelle opération ensembliste : la différence symétrique. Question 1 La différence ensembliste est une opération classique de la théorie des ensembles, et que l on peut expliquer de différentes façons. Dans cette première question, nous utilisons la définition suivante : La différence symétrique entre deux ensembles E 1 et E 2, qui est notée E 1 E 2, représente l ensemble des élement e tels que : 1

soit e appartient à E 1 soit e appartient à E 2 mais e ne peut appartenir simultanément à E 1 et E 2. Sans utiliser les opérations ensemblistes prédéfinies, proposer une définition de la fonction diff_sym qui construit la différence symétrique entre deux ensembles E1 et E2. >>> diff_sym({2, 5, 9}, {3, 5, 8}) {2, 3, 8, 9} >>> diff_sym({2, 5, 9}, {2, 5, 8, 9}) {8} >>> diff_sym({'a', 'b', 'c'}, {'d', 'e', 'f'}) {'a', 'b', 'c', 'd', 'e', 'f'} >>> diff_sym({'a', 'b', 'c'}, set()) {'a', 'b', 'c'} >>> diff_sym(set(), {'d', 'e', 'f'}) {'d', 'e', 'f'} >>> diff_sym({'a', 'b', 'c'}, {'a', 'b', 'c'}) set() Question 2 Proposer une seconde définition de la fonction diff_sym en exploitant directement la propriété de différence symétrique : E 1 E 2 = (E 1 \ E 2 ) (E 2 \ E 1 ) Remarque : on utilisera bien sûr les opérateurs ensemblistes prédéfinis par Python. Question : quelle définition de la fonction diff_sym est-elle selon-vous la plus efficace? Exercice 2 : Traduction Comme son nom l indique, l une des utilité d un dictionnaire est de s en servir comme outil de traduction. Nous allons voir ici quelques manipulation simples d un dictionnaire de langues. Dans la suite, on prendra en exemple les dictionnaires anglais-français et français-italien suivants : 2

# Dict_Ang_Fra : dict[str:str] Dict_Ang_Fra = {'the': 'le', 'cat': 'chat', 'fish' : 'poisson', 'catches': 'attrape'} # Dict_Fra_Ita : dict[str:str] Dict_Fra_Ita = {'le': 'il', 'chat': 'gatto', 'poisson' : 'pesce', 'attrape': 'cattura'} Question 1 Donner une définition de la fonction traduction_mot_a_mot qui, étant donnés une liste L de mot et un dictionnaire D, retourne la liste des mots de L traduits à partir du dictionnaire D. On supposera que tous les mots apparaissant dans L sont une clé du dictionnaire. >>> traduction_mot_a_mot([],dict_ang_fra) [] >>> traduction_mot_a_mot(['cat'],dict_ang_fra) ['chat'] >>> traduction_mot_a_mot(['the', 'cat', 'catches', 'the', 'fish'], Dict_Ang_Fra) ['le', 'chat', 'attrape', 'le', 'poisson'] >>> traduction_mot_a_mot(['le', 'chat', 'attrape', 'le', 'poisson'], Dict_Fra_Ita) ['il', 'gatto', 'cattura', 'il', 'pesce'] Question 2 Donner une définition de la fonction dictionnaire_inverse qui étant donné un dictionnaire D, renvoie le dictionnaire inverse. On supposera ici qu une même valeur n apparaît pas plusieurs fois dans le dictionnaire D. >>> dictionnaire_inverse({"cat": "chat"}) {'chat': 'cat'} >>> dictionnaire_inverse(dict_ang_fra) {'poisson': 'fish', 'le': 'the', 'chat': 'cat', 'attrape': 'catches'} 3

>>> dictionnaire_inverse(dict_fra_ita) {'pesce': 'poisson', 'il': 'le', 'gatto': 'chat', 'cattura': 'attrape'} Question 3 Donner une définition de la fonction composition_dictionnaires qui étant donnés deux dictionnaires D1 et D2, renvoie le dictionnaire correspondant à la composition des traductions. On supposera que toutes les valeurs de D1 sont des clés de D2. >>> composition_dictionnaires({"chat":"cat"}, {"cat":"gatto"}) {'chat': 'gatto'} >>> composition_dictionnaires(dict_ang_fra, Dict_Fra_Ita) {'fish': 'pesce', 'catches': 'cattura', 'the': 'il', 'cat': 'gatto'} Exercice 3 : Magasin en ligne Dans cet exercice, nous nous familiarisons avec les manipulations de dictionnaires sur une thématique de magasin en ligne. «Chez Geek and sons tout ce qui est inutile peut s acheter, et tout ce qui peut s acheter est un peu trop cher.» La base de prix des produits de Geek and sons est représentée en Python par un dictionnaire de type dict[str:float] avec : les noms de produits, de type str, comme clés les prix des produits, de type float, comme valeurs associées. Question 1 Donner une expression Python pour construire la base des prix des produits correspondant à la table suivante : Nom du produit Prix TTC Sabre laser 229.0 Mitendo DX 127.30 Coussin Linux 74.50 Slip Goldorak 29.90 Station Nextpresso 184.60 4

Question 2 Donner une définition de la fonction disponibilite qui étant donnés un nom de produit prod et une base de prix Prix retourne True si le produit est présent dans la base, où False sinon. Question 3 Donner une définition de la fonction prix_moyen qui, étant donnée une base de prix (contenant au moins un produit), retourne le prix moyen des produits disponibles. >>> prix_moyen({'sabre Laser': 229.0, 'Mitendo DX': 127.30, 'Coussin Linux' : 74.50, 'Slip Goldorak' : 29.90, 'Station Nextpresso' : 184.60}) 129.06 Question 4 Donner une définition de la fonction fourchette_prix qui, étant donnés un prix minimum mini, un prix maximum maxi et une base de Prix, retourne l ensemble des noms de produits disponibles dans cette fourchette de prix. >>> fourchette_prix(50.0, 200.0, {'Sabre Laser': 229.0, 'Mitendo DX': 127.30, 'Coussin Linux' : 74.50, 'Slip Goldorak' : 29.90, 'Station Nextpresso' : 184.60}) {'Coussin Linux', 'Mitendo DX', 'Station Nextpresso'} Question 5 Le panier est un concept omniprésent dans les sites marchands, Geeks and sons n échappe pas à la règle. En Python, le panier du client sera représenté par un dictionnaire de type dict[str:int] avec : les noms de produits comme clés une quantité d achat comme valeurs associées. Donner une expression Python correspondant à l achat de 3 sabres lasers, de 2 coussins Linux et de 1 slip Goldorak. 5

Question 6 Donner une définition de la fonction tous_disponibles qui, étant donnés un panier d achat Panier et une base de Prix, retourne True si tous les produits demandés sont disponibles, ou False sinon. Question 7 Donner une définition de la fonction prix_achats qui, étant donnés un panier d achat Panier et une base de Prix, retourne le prix total correspondant. >>> prix_achats({'sabre Laser': 3, 'Coussin Linux': 2, 'Slip Goldorak': 1}, {'Sabre Laser': 229.0, 'Mitendo DX' : 127.30, 'Coussin Linux' : 74.50, 'Slip Goldorak' : 29.90, 'Station Nextpresso' : 184.60}) 865.9 Remarque : on supposera que tous les articles du paniers sont disponibles dans la base de produits. Exercice 4 : Répétitions dans les listes L analyse des répétitions dans des séquences comme les listes représente un cas d utilisation typique des ensembles. Question 1 Donner une définition de la fonction repetes qui, étant donnée une liste L, retourne l ensemble des éléments répétés au moins une fois dans cette liste. >>> repetes([1, 2, 23, 9, 2, 23, 6, 2, 9]) {2, 9, 23} >>> repetes([1, 2, 3, 4]) set() 6

>>> repetes(['bonjour', 'ça', 'ça', 'va', '?']) {'ça'} Remarque : on supposera que le type des éléments de la liste L est compatible avec les ensembles (mais on n écrira pas d hypothèse correspondante). Question 2 Donner une définition de la fonction sans_repetes qui étant donnée une liste L retourne cette même liste L sans les répétitions éventuelles d éléments. >>> sans_repetes([1, 2, 23, 9, 2, 23, 6, 2, 9]) [1, 2, 23, 9, 6] >>> sans_repetes([1, 2, 3, 4]) [1, 2, 3, 4] >>> sans_repetes([2, 1, 2, 1, 2, 1, 2]) [2, 1] >>> sans_repetes(['bonjour', 'ça', 'ça', 'va', '?']) ['bonjour', 'ça', 'va', '?'] Question 3 Donner une définition de la fonction uniques qui, étant donnée une liste L, retourne l ensemble des éléments apparaissant exactement une fois dans cette liste. >>> uniques([1, 2, 23, 9, 2, 23, 6, 2, 1]) {6, 9} >>> uniques([1, 2, 1, 1]) {2} >>> uniques([1, 2, 1, 2, 1]) set() Attention : votre fonction devra uniquement utiliser des ensembles et non des dictionnaires pour enregistrer les répétitions. 7

Question 4 Donner une définition de la fonction frequences telle que repetes(l) retourne le dictionnaire des fréquences des éléments de L, c est à dire un dictionnaire dont les clés sont les éléments de L et qui leur associe comme valeur le nombre de fois où ils apparaîssent dans L. >>> frequences([]) {} >>> frequences([2]) {2: 1} >>> frequences([2, 2, 2]) {2: 3} >>> frequences([1, 2, 23, 9, 2, 23, 6, 2, 9]) {1: 1, 2: 3, 9: 2, 6: 1, 23: 2} Question 5 À partir de la fonction frequences, donner une définition de la fonction repetes_fois telle que repetes(k, L) retourne l ensemble des éléments répétés k fois dans L (pour k > 0). >>> repetes_fois(1, [1, 2, 23, 9, 2, 23, 6, 2, 9]) {1, 6} >>> repetes_fois(2, [1, 2, 23, 9, 2, 23, 6, 2, 9]) {9, 23} >>> repetes_fois(3, [1, 2, 23, 9, 2, 23, 6, 2, 9]) {2} >>> repetes_fois(4, [1, 2, 23, 9, 2, 23, 6, 2, 9]) set() Exercice 5 : Statistiques sur les lettres Dans cet exercice, on effectue quelques calculs statistiques sur les fréquences de lettres dans des textes (chaînes de caractères). Les fréquences (ou nombre d occurrences) des lettres sont représentées sous la forme d un dictionnaire de type dict[str:int] avec : 8

des lettres (caractères) comme clés des entiers naturels (fréquence du caractère) pour les valeurs associées Pour séparer les lettres de la langue française des autres caractères possibles dans les chaînes, on utilise la fonction suivante : def est_lettre(c): """ str -> bool Hypothèse : len(c) == 1 (caractère) Retourne True si le caractère c est une lettre, ou False sinon.""" return ((c >= 'a') and (c <= 'z')) \ or ((c >= 'A') and (c <= 'Z')) \ or (c in {'é', 'è', 'à', 'ù', 'œ'}) Question 1 Définir la fonction frequences_lettres qui étant donnée un chaîne de caractère s retourne les fréquences des lettres de s sous la forme d un dictionnaire de type dict[str:int]. >>> frequences_lettres('alea jacta est') {'j': 1, 'e': 2, 't': 2, 'c': 1, 'a': 4, 's': 1, 'l': 1} >>> frequences_lettres("l'élève") {'é': 1, 'e': 1, 'v': 1, 'l': 2, 'è': 1} Question 2 Définir une fonction lettre_freq_max qui retourne la lettre de fréquence maximale dans un dictionnaire Freqs de fréquences. >>> lettre_freq_max(frequences_lettres('alea jacta est')) 'a' >>> lettre_freq_max(frequences_lettres("l'élève")) 'l' Remarque : s il y a plusieurs lettres de fréquence maximale, alors on n en retourne qu une choisie arbitrairement. 9

Question 3 (en TME) Dans cette question, nous aimerions effectuer notre petit test statistique sur un véritable texte. Pour cela, nous allons tout d abord définir une fonction chargement_texte permettant de lire un fichier texte et de placer le résultat dans une chaîne de caractères. Remarque : nous n étudions pas le chargment et la sauvegarde des fichiers dans ce cours, donc on utilisera cette fonction en suivant simplement sa spécification. def chargement_texte(fichier): """ str -> str Hypothèse : le fichier est présent sur le disque Retourne la chaîne de caractères correspondant au contenu du fichier.""" # contenu : str contenu = '' # contenu du fichier with open(fichier, 'r') as f: contenu = f.read() return contenu On récupérera alors un fichier texte (encodage UTF-8) de langue française pour en étudier le contenu. On peut par exemple récupérer un texte intégral via le Projet Gutemberg, à l adresse suivante : http ://www.gutenberg.org Pour le TME, on peut choisir son propre texte mais attention à ce qu il ne soit pas trop volumineux. Pour les exemples on a choisi Quatrevingt treize de Victor Hugo que l on trouvera dans : /Vrac/1I001/quatrevingt-treize.txt Donner deux expressions Python permettant de : 1. récupérer le dictionnaire des fréquences des lettres présentes dans votre texte d exemple. 2. trouver la lettre dont la fréquence est la plus grande. 10

Question 4 On souhaite maintenant connaître les lettres qui ne dépassent pas une fréquence donnée dans un texte. Donner une définition de la fonction lettres_freq_inf qui étant donnés un dictionnaire de fréquences Freqs et une fréquence fseuil retourne l ensemble des lettres de fréquence inférieure à fseuil. >>> lettres_freq_inf(frequences_lettres('alea jacta est'), 1) {'c', 'j', 'l', 's'} >>> lettres_freq_inf(frequences_lettres("l'élève"), 2) {'e', 'l', 'v', 'è', 'é'} Remarque : on fera l hypothèse que la fréquence de seuil est strictement positive. En effet, nous n étudions pas l absence d un lettre dans le texte. Question 5 (en TME) Donner une expression Python permettant d obtenir l ensemble des lettres utilisées moins de 100 fois dans votre texte. Exercice 6 : Décomposition en facteurs premiers Dans cet exercice, nous allons écrire une fonction qui calcule la décomposition en facteurs premiers de n importe quel entier positif supérieur ou égal à 2. En effet, tout entier naturel supérieur ou égal à 2 peut s exprimer comme un produit de nombres premiers, appelé décomposition en facteurs premiers. Par exemple, la décomposition en facteurs premiers de 30 est 2 3 5, tandis que celle de 56 est 2 2 2 7. Comme le montre l exemple précédent, les facteurs premiers intervenant dans une décomposition peuvent apparaître plusieurs fois. Nous allons donc représenter une telle décomposition par un dictionnaire de type dict[int:int] dans lequel les clés sont les nombres premiers et les valeurs correspondent au nombre de fois où le nombre premier intervient dans la décomposition. Ainsi, reprenant nos deux exemples, la décomposition de 30 correspond au dictionnaire {2:1, 3:1, 5:1} tandis que la décomposition de 56 est donnée par le dictionnaire : {2:3, 7:1} 11

Question 1 Donner une définition de la fonction valeur_decomposition qui, étant donné un dictionnaire D correpospondant à la décomposition en facteurs premiers d un nombre, calcule la valeur de ce nombre. >>> valeur_decomposition({2:1, 3:1, 5:1}) 30 >>> valeur_decomposition({2:3, 7:1}) 56 >>> valeur_decomposition({2:10}) 1024 Question 2 Une liste de facteurs premiers est une liste de type list[int] d entiers naturels éventuellement répétés correspondant à la décomposition en facteurs premiers d un nombre. la liste [2, 3, 5] est la liste de facteurs premiers de 30 la liste [2, 2, 2, 7] est la liste de facteurs premiers de 56 la liste [2, 2, 2, 2, 2, 2, 2, 2, 2, 2] est la liste de facteurs premiers de 1024 (2 10 ) Donner une définition de la fonction decomposition qui, étant donnée une liste de facteurs premiers, retourne le dictionnaire correspondant à cette décomposition. >>> decomposition([2, 3, 5]) {2: 1, 3: 1, 5: 1} >>> decomposition([2, 2, 2, 7]) {2: 3, 7: 1} >>> decomposition([2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) {2: 10} Question 3 (difficile) Soit n 2 un entier. Soit P rem la liste des nombres premiers inférieurs ou égaux à n. On peut déterminer la liste L des facteurs premiers (avec répétition) de n à l aide de l algorithme suivant : Initialement, L = [] Pour chaque nombre premier p de P rem pris en ordre croissant : Tant que p divise n : 12

Ajouter p à L Diviser n par p Donner une définition de la fonction liste_facteurs_premiers qui, étant donné un entier n supérieur ou égal à 2, calcule la liste des facteurs premiers (avec répétition) de n implémentant l algorithme décrit ci-dessus. >>> liste_facteurs_premiers(30) [2, 3, 5] >>> liste_facteurs_premiers(56) [2, 2, 2, 7] >>> liste_facteurs_premiers(1024) [2, 2, 2, 2, 2, 2, 2, 2, 2, 2] >>> liste_facteurs_premiers(13) [13] Remarque : on supposera pour cette question que l on dispose d une fonction liste_nombre_premiers telle que liste_nombre_premier(n) renvoie la liste des nombres premiers inférieurs ou égaux à n. Voir par exemple l exercice Crible d Eratosthène du thème 7 pour une solution à ce problème. Question 4 À partir de la fonction précédente, donner une définition de la fonction : decomposition_facteurs_premiers qui, étant donné un entier n supérieur ou égal à 2, renvoie le dictionnaire correpospondant à la décomposition en facteurs premiers de n. >>> decomposition_facteurs_premiers(1024) {2: 10} >>> decomposition_facteurs_premiers(30) {2: 1, 3: 1, 5: 1} >>> decomposition_facteurs_premiers(56) {2: 3, 7: 1} >>> decomposition_facteurs_premiers(13) {13: 1} 13