Suite de Farey
Trouver les dénominateurs des fractions successives issue de l'ensemble ordonné de toutes les fractions réduites que l'on peut former avec les entiers de 1 à 99 comprise entre 0 et 1 dont les numérateurs sont 13 , 24 et 11.
Voici l'intitulé exacte du problème numéro 3 du chapitre 5 du livre "100 énigmes mathématiques résolues avec Python" appelé Suites de Farey.
Dans un article paru en 1816 dans la revue "Philosophical Magazine" et intitulé "On a curious Property of vulgar Fractions", le géologue John Farey (1766-1826) commente certaines suites de fractions qui plus tard, porteront son nom.
Pour tout entier n non nul, on définit la suite de Farey d'ordre n noté Fn, comme la suite ordonné des fractions irréductibles comprise entre 0 et 1 et et dont les dénominateurs sont inférieurs ou égaux à n.
On a donc :
F1={0/1 ; 1/1}
F2={0/1 ; 1/2 ; 1/1}
F3={0/1 ; 1/3 ; 1/2 ; 2/3 ; 1/1}
F4={0/1 ; 1/4 ; 1/3 ; 1/2 ; 2/3 ; 3/4 ; 1/1 }Dans son article, John Farey cite trois termes consécutifs de la suite F99. Mais, dans la veille revue, les trois dénominateurs ont été effacés par le temps. Les trois numérateurs sont eux, restés visibles. On sait que ces numérateurs sont respectivement 13 , 24 et 11.
Retrouver les trois dénominateurs effacés.
Comment va-t-on constuire cet ensemble? Peut-on se passer de la construction de cet ensemble (je pense que non)
Doit-on nécessairement construire cet ensemble de proche en proche ou peut-on le construire directement?
Et surtout comment ordonner cet ensemble? Comment peut-on comparer deux fractions?
Il faut que les fractions de cet ensemble soient irréductibles. Comment va-t-on gérer cet aspect?
Dans un premier temps on va considérer un liste de deux entiers p et q.
Constuire un ensemble de fractions:
Pour un dénominateur choisi, il est assez facile de d'énumérer toutes les fractions plus petite que 1 en procédant de la sorte
fractions=[] for i in range(n) : fractions.append([i,n])Et nous voulons les cumuler
On aurait sans doute faire ceci avec avec une itération
Mais notamment pour manipuler les opérateurs de classe, on peut construire une classe donne toutes les fractions plus petite que 1 en fonction d'un entier et un opérateur qui permet de cumuler deux listes de fractions.
Ordonner cet ensemble:
C'est ici que ça ce complique et que considérer une fraction comme une liste de deux entiers ne suffit plus.
Ainsi on peut faire un objet "Fraction" sur lequel on définit un opérateur de comparaison (a/b<c/d<=>a.d<b.c)
On va reprendre l'idée que l'on decrit plus haut en construisant un liste de "Fraction".
Je m'apprêtais a faire un tri à bulle pour ordonner ces fractions mais en fait la methode "sort" de l'objet list comprend la relation de comparaison que l'on vient de définir pour "Fraction".
Repérer les numérateurs successifs de l'énoncé:
C'est sans doute ici que je n'ai pas été le plus rigoureux.
D'une part en ne considérant pas uniquement les fractions réduites et d'autre part en faisant un pause sur le dernier numérateur mentionné et en vérifiant visuellement si les numérateurs précédents correspondent à ceux de l'énoncé.
Solution:
...,13/45,26/90,24/83,11/38,...
Donc les dénominateurs des fractions successives de la suite de Farey dont les numérateurs sont 13, 24 et 11 sont 45, 83 et 38
Articles Similaires
Il existe un existe une infinité de fraction égales à un demi. Parmi celles-ci certaines s'écrivent avec les neuf chiffres de un à neuf. C'est le cas par exemple pour 6729⁄13458 ou 7293⁄14596.
Trouver toutes les fractions égales à un tiers, dans lesquelles tous les chiffres de un à neuf apparaissent une et une seule fois.
Lire la suiteEcrire la fraction 17/19 comme somme de fraction ayant uniquement des 1 au numérateur.
Exemple avec 3/7:
3/7 = 1/3 + 1/11+ 1/231

