Euler 033

Publié le 22/12/16

Trouver les couples (n,d) avec {n \lt d}, s’écrivant {n=xy} et {d=yz} en base 10, et telle que {\dfrac{n}{d}=\dfrac{xy}{yz}=\dfrac{x}{z}} (exemple {\dfrac{19}{95}=\dfrac{1}{5}}). On ne retiendra pas les solutions où {x=y}, qui sont considérées comme évidentes.
Ce problème n’est certainement pas le plus intéressant des problèmes du Project Euler.

  1. Première solution
    Ici on forme une boucle sur tous les triplets {(x,y,z)} de {[1,9]^{3}}, et on teste les conditions {x\ne y} et {\dfrac{10x+y}{10y+z}=\dfrac{x}{z}}.

    >>> euler033a()
    [(16, 64), (19, 95), (26, 65), (49, 98)]

  2. Deuxième solution
    Ici on forme une boucle sur les numérateurs {n} de {[11,99]} et les dénominateurs {d} de {[n+1,99]}.
    On convertit {n,d} en leur représentations décimales {n=xy} et {d=uv}, puis on teste si {x\ne u}, {y=u} et {\dfrac{n}{d}=\dfrac{x}{v}}

    >>> euler033b()
    [(16, 64), (19, 95), (26, 65), (49, 98)]

  3. Troisième solution
    La condition {\dfrac{10x+y}{10y+z}=\dfrac{x}{z}} (avec {x\ne y}), s’écrit aussi: {10x(y-z)=z(y-x)}
    Ainsi {y-z} et {y-x} ont le même signe.
    De plus les deux conditions {\dfrac{10x+y}{10y+z} \lt 1} (avec {x\ne y}) et {\dfrac{x}{z} \lt 1} exigent {1\le x \lt y\le 9} et {1\le x \lt z\le 9}.
    On sait donc que {1\le x \lt z \lt y\le 9}, ce qui réduit la recherche des {(x,y,z)}.

    >>> euler033c()
    [(16, 64), (26, 65), (19, 95), (49, 98)]