Tiers

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 672913458 ou 729314596.

Trouver toutes les fractions égales à un tiers, dans lesquelles tous les chiffres de un à neuf apparaissent une et une seule fois.

Solution

Ici il s'agit de trouver un moyen d'obtenir les chiffres qui compose un nombre. En fait deux nombres plus exactement ou l'un est trois plus grand que l'autre.

"Les chiffres de 1 à 9 , une et une seule fois". Cela signifie que la liste des chiffres qu'on aura obtenu doit être exactement la liste [1,2,3,4,5,6,7,8,9]. (Une intéressante aurait été d'inclure le zéro mais non demandée dans l'énoncé)

Ainsi construisons une fonction qui renvoie une liste des chiffres qui compose un nombre :

def getDigits(number):
    digits=[]
    while(number//10 !=0):
        digits.append(number%10)
        number=number//10
    digits.append(number%10)
    return digits

Comme se sont des listes on peut se servir de l'opérateur "+" pour fusionner les résultats des deux nombres qui nous intéresse.

Ensuite pour négliger l'ordre des chiffres au sein de cette fraction on ordonnera les éléments de la liste pour comparer cette liste à la liste [1,2,3,4,5,7,8,9].

Enfin on bouclera sur un nombre d'entiers suffisants pour obtenir des résultats

Par ailleurs, pour borner les recherches on peut considérer les nombres jusqu'à 10 000 car si n<10^p =>3.n<10.n<10^(p+1) et comme p+(p+1)=9 (car neuf chiffres), p=4

On trouve : 5823/17469 et 5832/17496

https://github.com/linol/python/blob/master/tier.py

Articles Similaires

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.

Lire la suite