Aller au contenu

Énigmes

Le professeur de Serge et Paul a choisi deux entiers entre 2 et 99.

A Serge, il en révèle la somme et à Paul, le produit.

Paul soupire: "Je ne sais pas quels peuvent bien être ces deux entiers".

Réponse de Serge le narquois: "Je m'en doutais!"

Réponse de Paul piqué au vif: "Et bien figure-toi qu'en fin de compte j'ai trouvé quels sont ces entiers."

Réponse de Serge: "moi aussi"

 

Quels sont ces entiers?

Partager ce message


Lien à poster
Partager sur d’autres sites

3 réponses à cette énigme

Messages recommandés

  • 0
Révélation

 

Bon si Paul ne peut conclure c'est que le produit n'est pas un produit de nombres premiers

Si Serge le savait c'est que la somme est un nombre impair, donc un des nombres est pair

 

faut que je trouve la suite maintenant

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

L'énoncé peut se comprendre de plusieurs manières.

Révélation

Imaginons que Serge quand il dit "je m'en doutais", était en fait sûr que Paul ne pouvait pas savoir décomposer son produit de façon unique.

Révélation

Tout en finesse :

Révélation



def prod(L):
 p=1
 for i in L:
   p= i * p
 return p
resa=[]
comresa=[]
resp=[]
comresp=[]
for i in range(2,100):
    for j in range(i,100):
        p=i*j
        if p in resp:
            np=resp.index(p)
            comresp[np].append([i,j])
        else:
            resp.append(p)
            comresp.append([[i,j]])
        a=i+j
        if a in resa:
            na=resa.index(a)
            comresa[na].append([i,j])
        else:
            resa.append(a)
            comresa.append([[i,j]])
elimp=[]
print("Paul aurait su pour ces cas-là :")
for i in resp:
    j=resp.index(i)
    if len(comresp[j])==1:
# il y en a trop        print(comresp[j][0])
        elimp.append(comresp[j][0])
elima=[]
print("Cherchons s'il existe une valeur de somme pour laquelle Serge est sûr que Paul ne sait pas")
for i in range(len(resa)):
    mini=True
    for j in comresa[i]:
        k=resp.index(prod(j))
        if len(comresp[k])==1:
            mini=False
            break
    if mini:
        print(resa[i])
    else:
        #on doit éliminer ces cas.
        comresa[i]=[]
#Cherchons les produits cohérents.
for i in range(len(resp)):
    nouv=[]
    for j in comresp[i]:
        k=resa.index(sum(j))
        if len(comresa[k])!=0:
            nouv.append(j)
    comresp[i]=nouv
print("Cherchons s'il existe une valeur de produit pour laquelle Paul n'a qu'une seule possibilité")
for i in range(len(resp)):
    for j in comresp[i]:
        if len(comresp[i])==1:
            print(resp[i])
        else:
            #on doit éliminer ces cas
            comresp[i]=[]
#Cherchons les sommes cohérentes
for i in range(len(resa)):
    nouv=[]
    for j in comresa[i]:
        k=resp.index(prod(j))
        if len(comresp[k])!=0:
            nouv.append(j)
    comresa[i]=nouv
print("Cherchons s'il existe une valeur de somme pour laquelle Serge n'a qu'une seule possibilité")
for i in range(len(resa)):
    for j in comresa[i]:
        if len(comresa[i])==1:
            print(resa[i], comresa[i][0])

On fait tourner le programme, et stupeur, la dernière ligne est :

17 [4, 13]

 

Récapitulons :

Paul s'est vu attribuer 52 et Serge 17.

Serge savait que 17=2+15=3+14=4+13=5+12=6+11=7+10=8+9

et que

2*15=6*5

3*14=6*7

4*13=2*26

5*12=10*6

6*11=3*22

7*10=5*14

8*9=24*3

donc dès le départ, Serge savait que Paul ne pourrait pas être sûr.

Paul pouvait savoir que les valeurs pour lesquelles Serge serait sûr qu'il ne pouvait pas savoir étaient

11, 17, 23, 27, 29, 35, 37, 41, 47, 53

Or Paul hésitait entre 13*4 et 26*2, donc cela ne pouvait être que 13*4.

Serge pouvait refaire ce raisonnement.

Ça a l'air cohérent, mais c'est quand même tordu.

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bravo Ribi

Effectivement, avec un bon programme informatique ça marche mais on rate une partie du raisonnement!

 

Pour résoudre définitivement l'énigme:

Supposons que Serge et Paul n'ont pas d'ordinateur.

Ou mieux, que le professeur a choisi des entiers non bornés (on sait juste qu'ils sont supérieurs à deux)

Comment faire?

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...

Information importante

En utilisant ce site, vous acceptez notre Politique de confidentialité et nos Conditions d’utilisation
Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.