Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
Discussion fermée
#1 08-11-2010 21:27:44
- Fred
- Administrateur
- Inscription : 26-09-2005
- Messages : 7 349
Les tiroirs
Bonjour,
Une petite énigme arithmétique. 300 personnes sont devant 300 tiroirs, numérotés de 1 à 300.
* La première ouvre tous les tiroirs
* La seconde ferme les tiroirs pairs
* La troisième ouvre les tiroirs multiples de 3 qui sont fermés, et ferme les tiroirs multiples de 3 qui sont ouverts.
* La quatrième ouvre les tiroirs multiples de 4 qui sont fermés, et ferme les tiroirs multiples de 4 qui sont ouverts.
* La cinquième.....
Quand tout le monde est passé, quels sont les tiroirs ouverts?
Fred.
Hors ligne
#2 09-11-2010 00:15:59
- karlun
- Membre
- Inscription : 05-05-2010
- Messages : 216
Re : Les tiroirs
Bonsoir,
Je me disais: allez! juste un essai avant de compter d'autres moutons...
Je triche car c'est Python qui a tout fait ;-)
Voici le résultat:
le 1 ° tiroir est ouvert
le 4 ° tiroir est ouvert
le 9 ° tiroir est ouvert
le 16 ° tiroir est ouvert
le 25 ° tiroir est ouvert
le 36 ° tiroir est ouvert
le 49 ° tiroir est ouvert
le 64 ° tiroir est ouvert
le 81 ° tiroir est ouvert
le 100 ° tiroir est ouvert
le 121 ° tiroir est ouvert
le 144 ° tiroir est ouvert
le 169 ° tiroir est ouvert
le 196 ° tiroir est ouvert
le 225 ° tiroir est ouvert
le 256 ° tiroir est ouvert
le 289 ° tiroir est ouvert
Tous les autres sont fermés.
et voici le mini programme (y a plus mini sans doute).
n=300
T=[0]*n
for i in xrange(1,n+1):
for j in xrange(1,n+1):
if j%i==0:
if T[j-1]==0:
T[j-1]=1
else:
T[j-1]=0
print j,i,T
for k in xrange(1,n):
if T[k-1]==1:
print "le ",k," ° tiroir est ouvert"
Ça semble juste...
Dans la foulée, je me demande bien quel(s) est (sont) le(s) tiroir(s) le(s) plus usé(s) des glissières?
Maintenant, à mes moutons...
A+-*/
PS: Deux-trois lignes de programme en plus (qui n'apparaissent pas dans ce post) et on trouve qu'il n'y a qu'un seul tiroir plus usé des glissières que les autres. Lequel est-ce? (suspens!!) ;-)
Dernière modification par karlun (09-11-2010 07:27:10)
Hors ligne
#3 09-11-2010 09:50:32
- freddy
- Membre chevronné

- Lieu : Paris
- Inscription : 27-03-2009
- Messages : 7 457
Re : Les tiroirs
Salut karlun,
c'est dommage de le faire faire par l'ordi, c'est plus amusant de raisonner ... Par contre, ta question incidente est intéressante, et soluble par le même raisonnement.
Exemple : tiroir n° 100. 100 est divisible par : 1, 2, 4, 5, 10, 20, 25, 50, 100 => nombre de diviseur est impair, il est ouvert.
Sinon, il est fermé. Pex : le n° 13 est fermé (2 diviseurs) et 26 aussi (4 diviseurs).
Plus généralement, tout nombre entier positif compris entre 1 et 300 qui n'est pas un carré parfait a un nombre pair de diviseur, donc le tiroir correspondant est fermé.
Pour les carrés parfaits, le nombre est impair, donc le tiroir est ouvert.
Je reviens pour la question incidente.
Hors ligne
#4 09-11-2010 09:54:14
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Les tiroirs
Bonjour,
Tu veux plus court ?
Voilà :
# -*- coding: Latin-1 -*-
n=301
T=[1]*n # La 1ere personne ouvre tous les tiroirs
for p in xrange(2,n):
for t in xrange(p,n):
if t%p==0: # Si le n° de tiroir est multiple de p
T[t]=(1+T[t])%2 # Ouverture si fermé et fermeture si ouvert
for k in xrange(1,n):
if T[k]==1:
print "Le tiroir n°","%3i" % k,"est ouvert"
Affichage :
Le tiroir n° 4 est ouvert
Le tiroir n° 9 est ouvert
Le tiroir n° 16 est ouvert
Le tiroir n° 25 est ouvert
Le tiroir n° 36 est ouvert
Le tiroir n° 49 est ouvert
Le tiroir n° 64 est ouvert
Le tiroir n° 81 est ouvert
Le tiroir n° 100 est ouvert
Le tiroir n° 121 est ouvert
Le tiroir n° 144 est ouvert
Le tiroir n° 169 est ouvert
Le tiroir n° 196 est ouvert
Le tiroir n° 225 est ouvert
Le tiroir n° 256 est ouvert
Le tiroir n° 289 est ouvert
Je cherche maintenant à coder la 1ere partie (double boucle) sur une ligne : c'est fait, mais les résultats sont faux !
Si on raisonne, on voit vite
* que la p_ième personne ne s'occupera que des tiroirs t tels que t >= p
* que tous les tiroirs dont les n°s sont premiers seront fermés..., que le 1 sera ouvert et le dernier fermé, sauf si ce dernier est le n °100, 400, 900...
@+
[EDIT]
Je dirais même plus, vérification expérimentale du "théorème de freddy"...
Avec 1000 tiroirs et 1000 personnes :
Le tiroir n° 4 = 2² est ouvert
Le tiroir n° 9 = 3² est ouvert
Le tiroir n° 16 = 4² est ouvert
Le tiroir n° 25 = 5² est ouvert
Le tiroir n° 36 = 6² est ouvert
Le tiroir n° 49 = 7² est ouvert
Le tiroir n° 64 = 8² est ouvert
Le tiroir n° 81 = 9² est ouvert
Le tiroir n° 100 = 10² est ouvert
Le tiroir n° 121 = 11² est ouvert
Le tiroir n° 144 = 12² est ouvert
Le tiroir n° 169 = 13² est ouvert
Le tiroir n° 196 = 14² est ouvert
Le tiroir n° 225 = 15² est ouvert
Le tiroir n° 256 = 16² est ouvert
Le tiroir n° 289 = 17² est ouvert
Le tiroir n° 324 = 18² est ouvert
Le tiroir n° 361 = 19² est ouvert
Le tiroir n° 400 = 20² est ouvert
Le tiroir n° 441 = 21² est ouvert
Le tiroir n° 484 = 22² est ouvert
Le tiroir n° 529 = 23² est ouvert
Le tiroir n° 576 = 24² est ouvert
Le tiroir n° 625 = 25² est ouvert
Le tiroir n° 676 = 26² est ouvert
Le tiroir n° 729 = 27² est ouvert
Le tiroir n° 784 = 28² est ouvert
Le tiroir n° 841 = 29² est ouvert
Le tiroir n° 900 = 30² est ouvert
Le tiroir n° 961 = 31² est ouvert
Seuls les carrés sont ouverts...
Dernière modification par yoshi (09-11-2010 17:54:01)
Hors ligne
Pages : 1
Discussion fermée







