Page 1 sur 1

exo sur systèmes de numération

Posté : ven. 28 mai 2021 15:13
par lama
Bonjour,
Merci de m'aider pour cet exercice
a,b et c des nombres entiers tel que : 1 ≤ a ≤ b ≤ c
- Déterminer a, b et c pour qu'on a dans le système à base a : \(b+c=\overline{46}^{ a}\) et \(b\times c=\overline{545}^{a}\)
J'ai développé et j'ai trouvé : \(b+c=6+4a\) et \(bc=5+4a+5a^{2}\) avec la condition \(a>6\)
Merci

Re: exo sur systèmes de numération

Posté : sam. 29 mai 2021 08:31
par sos-math(21)
Bonjour,
On considère le polynôme \(P\) défini sur \(\mathbb{R}\) par \(P(x)=(x-b)(x-c)\). Ce polynôme admet \(b\) et \(c\) comme racines, et lorsqu'on développe, on obtient \(P(x)=x^2-(b+c)x+bc\).
Ce qui signifie que chercher les valeurs de \(b\) et \(c\) est équivalent à résoudre l'équation du second degré \(x^2-(b+c)x+bc=0\).
Tu peux ensuite, remplacer les expressions des sommes et produits en fonction de \(a\) :
\(x^2-(4a+6)x+(5a^2+4a+5)=0\).
Tu peux ensuite t'intéresser à la résolution de cette équation du second degré en calculant le discriminant :
\(\Delta = (4a+6)^2-4(5a^2+4a+5)=\ldots\).
Cela te fera un polynôme du second degré en \(a\) et comme il faut que ce discriminant soit strictement positif pour que l'équation de départ admette deux solutions distinctes, cela te donnera des conditions sur \(a\). Sachant que \(a>6\) (car le chiffre \(6\) est utilisé dans sa base avec \(\overline{46}^a\), cela te laissera peu possibilités pour les valeurs de \(a\) (qui est un entier !).
Il te restera à tester les valeurs de \(b\) et \(c\) avec les candidats obtenus pour \(a\) et tu trouveras vite laquelle des valeurs restantes mène à une solution.
Je te laisse chercher et terminer le raisonnement.

Re: exo sur systèmes de numération

Posté : sam. 29 mai 2021 09:22
par lama
Bonjour, oui j'ai trouvé
merci beaucoup

Re: exo sur systèmes de numération

Posté : sam. 29 mai 2021 09:32
par sos-math(21)
Bonjour,
très bien si tu as pu trouver ; normalement on a \(a=8\,;\,b=17\,;\,c=21\).
On peut aussi programmer la recherche des solutions avec la fonction suivante qui teste les valeurs entières entre 7 et un entier \(a\geqslant 7\), entré en paramètre :

Code : Tout sélectionner

import math
def recherche(a):
    liste = []
    for k in range(7,a):
        s = 6 + 4*k
        p = 5 + 4*k + 5*k*k
        delta = s**2 - 4*p
        if delta >0:
            rac1 = (s - math.sqrt(delta))/2
            rac2 = (s + math.sqrt(delta))/2
            if int(rac1)==rac1 and int(rac2)==rac2:
                liste.append((k,rac1,rac2))
    return liste
Et l'appel suivant donne :

Code : Tout sélectionner

>>> recherche(1000)
[(8, 17.0, 21.0)]
On peut ensuite vérifier en codant une fonction de conversion :

Code : Tout sélectionner

def convert(n,b):
    """retourne sous forme de tableau l'écriture en base b de  l'entier n écrit en base 10"""
    t = []
    if n==0:
        return [0]
    while n>0:
        quotient = n // b
        reste = n % b
        t = [reste] + t
        n = quotient
    return t
Puis en appelant la fonction :

Code : Tout sélectionner

>>> convert(17+21,8)
[4, 6]

>>> convert(17*21,8)
[5, 4, 5]

Mais je pense que tu avais trouvé sans avoir recours à la programmation.
Cet exercice étant résolu, je verrouille le sujet.
Bonne continuation