{"id":2725,"date":"2020-06-18T11:39:18","date_gmt":"2020-06-18T09:39:18","guid":{"rendered":"https:\/\/www.mathweb.fr\/euclide\/?p=2725"},"modified":"2024-06-09T16:50:36","modified_gmt":"2024-06-09T14:50:36","slug":"fractions-continues-en-python","status":"publish","type":"post","link":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/","title":{"rendered":"Fractions continues en Python"},"content":{"rendered":"\n<p>Les fractions continues constituent une notion plut\u00f4t int\u00e9ressant en math\u00e9matiques. C&#8217;est une fa\u00e7on d&#8217;\u00e9crire les nombres. Dans cet article, je vais expliquer dans les grandes lignes la notion math\u00e9matique et dans un second temps, nous allons impl\u00e9menter en Python une classe permettant de repr\u00e9senter une fraction continue et d&#8217;en obtenir sa valeur fractionnaire.<\/p>\n\n\n\n<!--more-->\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault-1024x576.jpg\" alt=\"Fractions continues en Python\" class=\"wp-image-2735\" srcset=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault-1024x576.jpg 1024w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault-600x338.jpg 600w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault-300x169.jpg 300w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault-768x432.jpg 768w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Fractions continues en Python<\/figcaption><\/figure>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Au menu sur cette page...<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Fractions_continues_du_point_de_vue_mathematique\" >Fractions continues du point de vue math\u00e9matique<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Un_exemple_en_partant_dune_equation\" >Un exemple en partant d&#8217;une \u00e9quation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Obtenir_la_fraction_continue_finie_dun_nombre_rationnel\" >Obtenir la fraction continue finie d&#8217;un nombre rationnel<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Fractions_continues_implementation_en_Python\" >Fractions continues : impl\u00e9mentation en Python<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Le_constructeur\" >Le constructeur<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Une_methode_pour_convertir_une_liste_en_fraction\" >Une m\u00e9thode pour convertir une liste en fraction<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Une_methode_pour_retourner_le_nombre_decimal_correspondant_a_une_liste\" >Une m\u00e9thode pour retourner le nombre d\u00e9cimal correspondant \u00e0 une liste<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Une_methode_pour_trouver_la_liste_correspondant_a_une_fraction\" >Une m\u00e9thode pour trouver la liste correspondant \u00e0 une fraction<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Le_bilan\" >Le bilan<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#Fractions_continues_en_Python_le_programme_complet\" >Fractions continues en Python : le programme complet<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fractions_continues_du_point_de_vue_mathematique\"><\/span>Fractions continues du point de vue math\u00e9matique<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Un_exemple_en_partant_dune_equation\"><\/span>Un exemple en partant d&#8217;une \u00e9quation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Partons de l&#8217;\u00e9quation : $$x^2-x-1=0,$$ que l&#8217;on peut facilement r\u00e9soudre \u00e0 l&#8217;aide de la th\u00e9orie des \u00e9quations du second degr\u00e9. On trouve alors deux solutions not\u00e9es:$$\\varphi = \\frac{1+\\sqrt5}{2}&gt;0$$et$$\\overline{\\varphi}=\\frac{1-\\sqrt5}{2}&lt;0.$$<\/p>\n\n\n\n<p>Partons de cette \u00e9quation pour arriver \u00e0 l&#8217;\u00e9criture:$$x^2=x+1$$et, en supposant que \\(x&gt;0\\) et en divisant les deux membres par \\(x\\):$$x = 1 + \\frac{1}{x}.$$Cette derni\u00e8re \u00e9galit\u00e9 signifie donc que:$$\\varphi=1+\\frac{1}{\\varphi}$$ car nous avons suppos\u00e9 \\(x&gt;0\\) et que la seule solution strictement positive est \\(\\varphi\\).<\/p>\n\n\n\n<p>En rempla\u00e7ant le \\(\\varphi\\) de droite par ce \u00e0 quoi il est \u00e9gal, \u00e0 savoir \\(\\displaystyle 1+\\frac{1}{\\varphi}\\), on a l&#8217;\u00e9galit\u00e9:$$\\varphi=1+\\frac{1}{1+\\frac{1}{\\varphi}}.$$On voit alors que l&#8217;on peut r\u00e9p\u00e9ter cette action une infinit\u00e9 de fois pour arriver \u00e0:$$\\varphi=1+\\frac{1}{1+\\frac{1}{1+\\frac{1}{1+\\frac{1}{\\cdots}}}}.$$Cette derni\u00e8re \u00e9criture de \\(\\varphi\\) est appel\u00e9e sa <em>fraction continue<\/em>. Dans le cas pr\u00e9sent, la fraction continue est <em>infinie<\/em>, mais c&#8217;est parce que \\(\\varphi\\) n&#8217;est pas <em>rationnel<\/em> : il ne s&#8217;\u00e9crit pas sous la forme \\(\\displaystyle\\frac{p}{q}\\), o\u00f9 <em>p<\/em> et <em>q<\/em> sont deux entiers. En effet, on arrive \u00e0 montrer le r\u00e9sultat suivant :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Une \u00e9criture en fraction continue finie repr\u00e9sente un nombre rationnel.<\/p>\n<\/blockquote>\n\n\n\n<p>Ce r\u00e9sultat va \u00eatre utile pour notre classe Python future.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Obtenir_la_fraction_continue_finie_dun_nombre_rationnel\"><\/span>Obtenir la fraction continue finie d&#8217;un nombre rationnel<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Posons:$$x=\\frac{15\\;872}{7\\;355}.$$Appliquons l&#8217;algorithme d&#8217;Euclide aux num\u00e9rateur et d\u00e9nominateur:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">15 872 = 2 x 7 355 + 1 162\n7 355 = 6 x 1 162 + 383\n1 162 = 3 x 383 + 13\n383 = 29 x 13 + 6\n13 = 2 x 6 + 1\n6 = 6 x 1 + 0<\/pre>\n\n\n\n<p>De la premi\u00e8re ligne, on peut \u00e9crire:$$\\frac{15\\;872}{7\\;355}=2+\\frac{1\\;162}{7\\;355}.$$Mais de la deuxi\u00e8me ligne, on peut \u00e9crire:$$\\frac{7\\;355}{1\\;162}=6+\\frac{383}{1\\;162}$$donc:$$\\frac{15\\;872}{7\\;355}=2+\\frac{1}{6+\\frac{383}{1\\;162}}.$$Par un raisonnement similaire, en continuant ainsi, on arrive \u00e0:$$\\frac{15\\;872}{7\\;355}=2+\\frac{1}{6+\\frac{1}{3+\\frac{1}{29+\\frac{1}{2+\\frac{1}{6}}}}}.$$L&#8217;\u00e9criture d&#8217;une telle fraction continue est all\u00e9g\u00e9e en \u00e9crivant:$$\\frac{15\\;872}{7\\;355}=[2,6,3,29,2,6].$$Les nombres entre les crochets ne sont autres que les quotients successifs dans l&#8217;algorithme d&#8217;Euclide.<\/p>\n\n\n\n<p>Nous voyons bien que pour un nombre rationnel, la fraction continue ne peut \u00eatre que finie dans la mesure o\u00f9 l&#8217;algorithme d&#8217;Euclide est lui-m\u00eame fini.<\/p>\n\n\n\n<p>Pour une fraction continue infinie, comme \\(\\varphi\\), on adoptera la notation suivante:$$\\varphi=[\\overline{1}].$$ On surmonte d&#8217;une barre ce qui se r\u00e9p\u00e8te \u00e0 l&#8217;infini. Cela peut donc \u00eatre aussi:$$[1,4,\\overline{7,3}] = 1+\\frac{1}{4+\\frac{1}{7+\\frac{1}{3+\\frac{1}{7+\\frac{1}{3+\\cdots}}}}}.$$<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fractions_continues_implementation_en_Python\"><\/span>Fractions continues : impl\u00e9mentation en Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Nous allons ici cr\u00e9er une classe <em>Frac_cont<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Le_constructeur\"><\/span>Le constructeur<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Cette classe devra admettre une instance de type <em>list<\/em> ou de type <em>Fraction<\/em>, en ayant au pr\u00e9alable import\u00e9 le module <em>fractions<\/em>. En effet, je veux:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00e0 partir d&#8217;une liste, obtenir la fraction correspondante;<\/li>\n\n\n\n<li>\u00e0 partir d&#8217;une fraction, obtenir la liste correspondante.<\/li>\n<\/ul>\n\n\n\n<p>Mais si l&#8217;instance est une liste, il faut aussi voir s&#8217;il y a r\u00e9p\u00e9tition d&#8217;une s\u00e9quence (comme pour \\(\\varphi\\)). Il me faut alors penser \u00e0 cr\u00e9er une autre classe d&#8217;objet repr\u00e9sentant cette r\u00e9p\u00e9tition. Je vais nommer cette classe <em>Rep<\/em> qui va faire en sorte de retourner une liste compos\u00e9e d&#8217;un certain nombre de r\u00e9p\u00e9titions de la s\u00e9quence (par exemple Rep([1] , 100).liste() retournera une liste de 100 &#8220;1&#8221;.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class Frac_cont():\n    def __init__(self , instance):\n        if isinstance(instance,list):\n            if isinstance(instance[-1] , Rep):\n                N = instance[-1].liste()\n                instance.pop()\n                instance.extend( N )\n            self.ma_liste = instance\n            self.fraction = None\n        if isinstance(instance,Fraction):\n            self.fraction = instance\n            self.ma_liste = None<\/pre>\n\n\n\n<p>La ligne 3 signifie que si <em>instance<\/em> est de type <em>Rep<\/em> alors on construit une liste N constitu\u00e9e d&#8217;un certain nombre de fois la s\u00e9quence \u00e0 r\u00e9p\u00e9ter, on enl\u00e8ve le dernier \u00e9l\u00e9ment de l&#8217;instance (l&#8217;objet de type <em>Rep<\/em>) \u00e0 l&#8217;aide de la m\u00e9thode <em><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.python.org\/fr\/3\/tutorial\/datastructures.html?highlight=list%20pop\" target=\"_blank\">pop<\/a><\/em>, et on le remplace par la liste N.<\/p>\n\n\n\n<p>\u00c0 ce stade, il est normal de ne pas trop bien comprendre o\u00f9 je veux en venir. Il faut avoir une vue globale de la classe.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Une_methode_pour_convertir_une_liste_en_fraction\"><\/span>Une m\u00e9thode pour convertir une liste en fraction<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def simplify(self):\n        if self.ma_liste is not None:            \n            counter = 0\n            for i in self.ma_liste[::-1]:\n                if i == 0:\n                    print('Error: number must be different from 0.')\n                    break\n                    \n                if counter == 0:\n                    result = Fraction(i,1)\n                    counter += 1\n                else:\n                    result = Fraction(i,1) + Fraction(1,result)\n                    \n            return result\n        else:\n            print('The instance of object Frac_cont must be a list.')<\/pre>\n\n\n\n<p>Je commence cette m\u00e9thode par v\u00e9rifier si mon instance de classe n&#8217;est pas une fraction (auquel cas la m\u00e9thode retourne une erreur, en anglais pour faire plus <em>class(e)<\/em>&#8230;).<\/p>\n\n\n\n<p>La ligne 4 boucle sur la liste mise \u00e0 l&#8217;envers. En effet, pour calculer la fraction, je dois partir de la liste depuis la fin vers le d\u00e9but. La logique se trouve en ligne 13 : \u00e0 chaque \u00e9tape, je dois inverser la fraction d\u00e9j\u00e0 obtenue \u00e0 l&#8217;\u00e9tape pr\u00e9c\u00e9dente et je dois lui ajouter le nombre de la liste sur lequel je suis.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Une_methode_pour_retourner_le_nombre_decimal_correspondant_a_une_liste\"><\/span>Une m\u00e9thode pour retourner le nombre d\u00e9cimal correspondant \u00e0 une liste<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def decimal(self):\n        return float( self.simplify() )<\/pre>\n\n\n\n<p>Rien de bien sorcier ici. Une fois la m\u00e9thode <em>simplify<\/em> impl\u00e9ment\u00e9e, il suffit de retourner le flottant correspondant \u00e0 la fraction trouv\u00e9e.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Une_methode_pour_trouver_la_liste_correspondant_a_une_fraction\"><\/span>Une m\u00e9thode pour trouver la liste correspondant \u00e0 une fraction<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def liste(self):\n        if self.fraction is not None:\n            L = []\n            f = self.fraction\n            a , b = f.numerator , f.denominator\n            if a &lt; b:\n                a, b = b, a\n            \n            while b != 0:\n                a, b , q = b, a % b , a \/\/ b\n                L += [ q ]\n                \n            return L\n        else:\n            print('The instance of object Frac_cont must be a Fraction.')<\/pre>\n\n\n\n<p>La ligne 2 sert \u00e0 v\u00e9rifier que l&#8217;instance est bien une fraction (si tel n&#8217;est pas le cas, on retourne un message d&#8217;erreur en anglais). <\/p>\n\n\n\n<p>Dans cette m\u00e9thode, on se sert de l&#8217;algorithme d&#8217;Euclide (lignes 5 \u00e0 11).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Le_bilan\"><\/span>Le bilan<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Et voil\u00e0 ! Notre classe est pr\u00eate. Nous allons la tester&#8230; On entre d&#8217;abord une liste pour en avoir sa fraction:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"monokai\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">>>> Frac_cont([2,3,1,1,9,1,1,48]).simplify()<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">15625\/6842<\/pre>\n\n\n\n<p>Maintenant, partons d&#8217;une fraction pour en avoir son d\u00e9veloppement en fraction continue:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"monokai\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">>>> Frac_cont( Fraction(63529,1252) ).liste()<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">[50, 1, 2, 1, 7, 13, 3]<\/pre>\n\n\n\n<p>Testons maintenant avec une liste o\u00f9 une s\u00e9quence est r\u00e9p\u00e9t\u00e9e:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"monokai\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">>>> Frac_cont( Rep([1]) ).decimal()<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">1.6180339985218033<\/pre>\n\n\n\n<p>qui correspond bien \u00e0 une valeur approch\u00e9e du nombre d&#8217;or \\(\\varphi\\).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fractions_continues_en_Python_le_programme_complet\"><\/span>Fractions continues en Python : le programme complet<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Trouvez le programme complet<a href=\"https:\/\/www.mathweb.fr\/euclide\/les-sources-latex-de-certains-articles\/#20200618\" target=\"_blank\" rel=\"noreferrer noopener\">, <\/a>y compris la classe Rep(), ci-dessous:<\/p>\n\n\n\n<div class=\"wp-block-file aligncenter um_article\"><a href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/Fraction_continue.py\">Fraction_continue<\/a><a href=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/Fraction_continue.py\" class=\"wp-block-file__button wp-element-button\" download>T\u00e9l\u00e9charger<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Les fractions continues constituent une notion plut\u00f4t int\u00e9ressant en math\u00e9matiques. C&#8217;est une fa\u00e7on d&#8217;\u00e9crire les nombres. Dans cet article, je vais expliquer dans les grandes lignes la notion math\u00e9matique et dans un second temps, nous allons impl\u00e9menter en Python une classe permettant de repr\u00e9senter une fraction continue et d&#8217;en obtenir [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2735,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6,5],"tags":[51,216,215],"class_list":["post-2725","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatique","category-mathematiques","category-python","tag-algorithme","tag-euclide","tag-fractions-continues"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fractions continues en Python (avec une classe) - Mathweb.fr<\/title>\n<meta name=\"description\" content=\"Dans cet article, je vous explique dans les grandes lignes ce que sont les fractions continues en maths et j&#039;impl\u00e9mente une classe en Python.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fractions continues en Python (avec une classe) - Mathweb.fr\" \/>\n<meta property=\"og:description\" content=\"Dans cet article, je vous explique dans les grandes lignes ce que sont les fractions continues en maths et j&#039;impl\u00e9mente une classe en Python.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Mathweb.fr\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-18T09:39:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-09T14:50:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"St\u00e9phane Pasquet\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"St\u00e9phane Pasquet\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/\"},\"author\":{\"name\":\"St\u00e9phane Pasquet\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"headline\":\"Fractions continues en Python\",\"datePublished\":\"2020-06-18T09:39:18+00:00\",\"dateModified\":\"2024-06-09T14:50:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/\"},\"wordCount\":974,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/maxresdefault.jpg\",\"keywords\":[\"algorithme\",\"euclide\",\"fractions continues\"],\"articleSection\":[\"Informatique\",\"Math\u00e9matiques\",\"Python\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/\",\"name\":\"Fractions continues en Python (avec une classe) - Mathweb.fr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/maxresdefault.jpg\",\"datePublished\":\"2020-06-18T09:39:18+00:00\",\"dateModified\":\"2024-06-09T14:50:36+00:00\",\"description\":\"Dans cet article, je vous explique dans les grandes lignes ce que sont les fractions continues en maths et j'impl\u00e9mente une classe en Python.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/maxresdefault.jpg\",\"contentUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/maxresdefault.jpg\",\"width\":1280,\"height\":720,\"caption\":\"fractions continues\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/2020\\\/06\\\/18\\\/fractions-continues-en-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fractions continues en Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#website\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/\",\"name\":\"Mathweb.fr\",\"description\":\"Math\u00e9matiques, LaTeX et Python\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\",\"name\":\"St\u00e9phane Pasquet\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"contentUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"width\":74,\"height\":77,\"caption\":\"St\u00e9phane Pasquet\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fractions continues en Python (avec une classe) - Mathweb.fr","description":"Dans cet article, je vous explique dans les grandes lignes ce que sont les fractions continues en maths et j'impl\u00e9mente une classe en Python.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/","og_locale":"fr_FR","og_type":"article","og_title":"Fractions continues en Python (avec une classe) - Mathweb.fr","og_description":"Dans cet article, je vous explique dans les grandes lignes ce que sont les fractions continues en maths et j'impl\u00e9mente une classe en Python.","og_url":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/","og_site_name":"Mathweb.fr","article_published_time":"2020-06-18T09:39:18+00:00","article_modified_time":"2024-06-09T14:50:36+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault.jpg","type":"image\/jpeg"}],"author":"St\u00e9phane Pasquet","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"St\u00e9phane Pasquet","Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#article","isPartOf":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/"},"author":{"name":"St\u00e9phane Pasquet","@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"headline":"Fractions continues en Python","datePublished":"2020-06-18T09:39:18+00:00","dateModified":"2024-06-09T14:50:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/"},"wordCount":974,"commentCount":0,"publisher":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"image":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault.jpg","keywords":["algorithme","euclide","fractions continues"],"articleSection":["Informatique","Math\u00e9matiques","Python"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/","url":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/","name":"Fractions continues en Python (avec une classe) - Mathweb.fr","isPartOf":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#primaryimage"},"image":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault.jpg","datePublished":"2020-06-18T09:39:18+00:00","dateModified":"2024-06-09T14:50:36+00:00","description":"Dans cet article, je vous explique dans les grandes lignes ce que sont les fractions continues en maths et j'impl\u00e9mente une classe en Python.","breadcrumb":{"@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#primaryimage","url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault.jpg","contentUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/maxresdefault.jpg","width":1280,"height":720,"caption":"fractions continues"},{"@type":"BreadcrumbList","@id":"https:\/\/www.mathweb.fr\/euclide\/2020\/06\/18\/fractions-continues-en-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.mathweb.fr\/euclide\/"},{"@type":"ListItem","position":2,"name":"Fractions continues en Python"}]},{"@type":"WebSite","@id":"https:\/\/www.mathweb.fr\/euclide\/#website","url":"https:\/\/www.mathweb.fr\/euclide\/","name":"Mathweb.fr","description":"Math\u00e9matiques, LaTeX et Python","publisher":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mathweb.fr\/euclide\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69","name":"St\u00e9phane Pasquet","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","contentUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","width":74,"height":77,"caption":"St\u00e9phane Pasquet"},"logo":{"@id":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp"}}]}},"_links":{"self":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts\/2725","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/comments?post=2725"}],"version-history":[{"count":0,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/posts\/2725\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/media\/2735"}],"wp:attachment":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/media?parent=2725"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/categories?post=2725"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/tags?post=2725"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}