Trouver les x,y,z tel que x*y*z = N
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 48

Trouver les x,y,z tel que x*y*z = N



  1. #1
    Floklo

    Trouver les x,y,z tel que x*y*z = N


    ------

    Bonjour je cherche juste à programmer une méthode qui trouve tout les x,y,z (entiers) tel que x*y*z = N (N un entiers aussi)

    Le programme marche mais me donne aussi toutes les "redondances".
    Quelqu’un connait-il une méthode pour éviter d'avoir en sortie les même triplets dans un ordre différent ?

    Le code est en python, j'ai mis N = 36 mais il peut être quelconque.

    Merci
    Cordialement

    Code:
    x = int
    y= int
    z=int
    
    liste_triplets = []
    
    N = 36
    
    for i in range(1,N):
        
        x = i
        
        for j in range(1,N):
            
            y = j
            
            for k in range(1,N):
                
                z =k
                
                if x*y*z == N:
                    
                    liste_nbr = [x,y,z]
                    liste_triplets.append(liste_nbr)
                    
    print liste_triplets

    -----

  2. #2
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    Et si tu les listes par ordre croissants pour commencer x<=y<=z, puis ( c'est le cas ici ) que tu élimines les doublons exacts ( 1*6*6 ) ?
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  3. #3
    Merlin95

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par Floklo Voir le message
    Quelqu’un connait-il une méthode pour éviter d'avoir en sortie les même triplets dans un ordre différent ?
    Pour ne pas avoir de "redondances" tu peux modifier le code ainsi :

    Code:
    x = int
    y= int
    z=int
    
    liste_triplets = []
    
    N = 36
    
    for i in range(1,N):
        
        x = i
        
        for j in range(i,N):
            
            y = j
            
            for k in range(j,N):
                
                z =k
                
                if x*y*z == N:
                    
                    liste_nbr = [x,y,z]
                    liste_triplets.append(liste_nbr)
                    
    print liste_triplets
    Dernière modification par Merlin95 ; 23/08/2017 à 15h20.

  4. #4
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    marches pas dans tous les cas, ici par exemple (1,6,6) est solution et le dernier k n'est pas strictement supérieur à j
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  5. A voir en vidéo sur Futura
  6. #5
    Merlin95

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par ansset Voir le message
    marches pas dans tous les cas, ici par exemple (1,6,6) est solution et le dernier k n'est pas strictement supérieur à j
    J'ai modifié le code effectivement de mon message précédent.

  7. #6
    Floklo

    Re : Trouver les x,y,z tel que x*y*z = N

    Ah merci Merlin !

    J'ai aussi pris la remarque de Ansset (après je sais pas si c'est se que tu voulais me faire comprendre) mais j'ai changé modifié ça:
    Code:
    x = int
    y= int
    z=int
    
    liste_triplets = []
    
    N = 36
    
    
    for i in range(1,N):
        
        x = i
        
        for j in range(1,N):
            
            y = j
            
            for k in range(1,N):
                
                z =k
                
                if x*y*z == N:
                    
                    if z >= y and y >= x:  #modification
                        
                        liste_nbr = [x,y,z]
                        liste_triplets.append(liste_nbr)
                    
                    
    print liste_triplets
    Et ça à l'air de marcher pour tout les cas.
    Et pour les doublons se n'est pas grave, je les gardes

    Merci à vous deux !

  8. #7
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par Merlin95 Voir le message
    J'ai modifié le code effectivement de mon message précédent.
    je viens de voir....
    on a "parlé" en même temps.
    dommage pour les doublons à la fin, on peut les éliminer pour faire "propre".
    cordialement à tous.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  9. #8
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    ps; pas compris le dernier code proposé par Floklo, puisqu'il fait repartir j de 1, tout comme k !!??
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  10. #9
    Floklo

    Re : Trouver les x,y,z tel que x*y*z = N

    Tu veux dire enlever les solutions avec des doublons dedans ? je ne comprend pas ?

  11. #10
    Floklo

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par ansset Voir le message
    ps; pas compris le dernier code proposé par Floklo, puisqu'il fait repartir j de 1, tout comme k !!??
    Oui le code que j'ai mis marche, mais c'est vrai que c'est bête d'avoir laissé j et k commencé par 1. Je n'y avais pas pensé.*

    D’où les redondance en plus...

  12. #11
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par Floklo Voir le message
    Tu veux dire enlever les solutions avec des doublons dedans ? je ne comprend pas ?
    oui, ( on peut même parler potentiellement de triplet ici si tu fais varier i ,j et k de 1 à N )
    en prenant des valeurs supérieures ( mais pas strictement ) on élimine beaucoup de solutions redondantes.
    ne restent celle avec 2 ou 3 chiffres identiques.
    qui sont facile à identifier.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  13. #12
    Merlin95

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par ansset Voir le message
    oui, ( on peut même parler potentiellement de triplet ici si tu fais varier i ,j et k de 1 à N )
    en prenant des valeurs supérieures ( mais pas strictement ) on élimine beaucoup de solutions redondantes.
    ne restent celle avec 2 ou 3 chiffres identiques.
    qui sont facile à identifier.
    Je ne suis pas sûr à 100% mais avec la solution en prenant les valeurs supérieures ou égales, je crois qu'il n'y a plus de doublons.
    Dernière modification par Merlin95 ; 23/08/2017 à 16h02.

  14. #13
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    ben si, le code, tel que je le lis, donne à la fois 1,6,6 et 1,6,6 par exemple.
    et s'il s'agissait de 2^3 on aurait 3 fois 2,2,2 !

    sauf si on élimine une solution "déjà" obtenue, ce qui n'est pas dans le code.
    Dernière modification par ansset ; 23/08/2017 à 16h05.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  15. #14
    Merlin95

    Re : Trouver les x,y,z tel que x*y*z = N

    Non je ne vois pas.

    pour N = 13, le code va tester :
    1, 1, 1
    1, 1, 2
    ...
    1, 1, 13
    ...
    1, 5, 5
    1, 5, 6
    ...
    1, 5, 13
    1, 6, 6
    1, 6, 7
    1, 6, 8
    ...
    1, 6, 13
    1, 7, 7
    1, 7, 8
    1, 7, 9
    ...
    1, 7, 13
    ...
    Dernière modification par Merlin95 ; 23/08/2017 à 16h10.

  16. #15
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    tu me parle de N=13, ( nb premier ) alors que l'énoncé initial parle de N=36 qui est un carré !
    d'ailleurs, pas compris tes solutions !
    Dernière modification par ansset ; 23/08/2017 à 16h12.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  17. #16
    Merlin95

    Re : Trouver les x,y,z tel que x*y*z = N

    désolé j'ai pensé à une addition x+y+z au lieu de x*y*z. (c'est pour cela que j'ai parlé de 13, 1+6+6).

    Mais sur le fond c'est pareil, je n'ai pas donné les solutions mais les triplets testés consécutivement par le programme pour montrer que je pense qu'il n'y a pas de doublons pour 1, 6, 6

  18. #17
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    le code " tel qu'écrit" donne un doublon !
    et idem pour 8 ou il donnerait 3 fois la solution 2,2,2 par exemple.
    sauf à exclure une solution déjà trouvée, ce qui n'est pas dans l'algorithme.
    Dernière modification par ansset ; 23/08/2017 à 17h49.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  19. #18
    Spazi

    Re : Trouver les x,y,z tel que x*y*z = N

    Non, le code donné par Merlin ne donne pas de doublons. Relisez-le

  20. #19
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    ben , si justement tel qu'écrit, à moins que les codes me soient trop anciens !!!
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  21. #20
    Merlin95

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par ansset Voir le message
    à moins que les codes me soient trop anciens !!!
    Difficile à dire, je ne vois pas où vous voyez des doublons en fait.

  22. #21
    SULREN

    Re : Trouver les x,y,z tel que x*y*z = N

    Bonjour,
    Je n'ai peut-être pas tout lu correctement et dirai peut-être des bêtises, mais il me semble que pour éviter les doublons en exécutant au cœur de la boucle le calcul x*y*z, le plus simple serait de faire l'inverse, c'est à dire de factoriser N.
    On crée une boucle unique dans laquelle on divise N successivement par des facteurs allant de 1 à N/2.
    On ne retient que les résultats entiers des divisions.

    On arrive à des nombres premiers qui sont les diviseurs de N.
    Ensuite on les regroupe "manuellement" de sorte à n'avoir que trois nombres au total qu'on baptise x, y, z selon son bon plaisir. Il ne peut pas y avoir de doublons.
    Dernière modification par SULREN ; 23/08/2017 à 22h09.

  23. #22
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    c'est une solution , sauf qu'il suffit de rac(N)
    c'est quoi le "bon plaisir ?
    Dernière modification par ansset ; 23/08/2017 à 22h14.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  24. #23
    SULREN

    Re : Trouver les x,y,z tel que x*y*z = N

    Re
    Oui c'est de 2 à Rac (n) en effet. Je n'ai pas pris de temps de replonger dans la factorisation en nombres premiers.
    "Le bon plaisir" c'est d'affecter x au plus grand des nombres premiers trouvés, y au nombre premier immédiatement inférieur et de regrouper tous les autres en z.
    Cette solution de regroupement en vaut une autre?
    Dernière modification par SULREN ; 23/08/2017 à 22h43.

  25. #24
    Spazi

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par ansset Voir le message
    ben , si justement tel qu'écrit, à moins que les codes me soient trop anciens !!!
    Merlin n'a posté qu'un code, 3ème post :
    Citation Envoyé par Merlin95 Voir le message
    Pour ne pas avoir de "redondances" tu peux modifier le code ainsi :

    Code:
    x = int
    y= int
    z=int
    
    liste_triplets = []
    
    N = 36
    
    for i in range(1,N):
        
        x = i
        
        for j in range(i,N):
            
            y = j
            
            for k in range(j,N):
                
                z =k
                
                if x*y*z == N:
                    
                    liste_nbr = [x,y,z]
                    liste_triplets.append(liste_nbr)
                    
    print liste_triplets
    Et celui-ci ne donne pas et ne peux pas donner de doublons.


    Citation Envoyé par SULREN Voir le message
    Re
    Oui c'est de 2 à Rac (n) en effet. Je n'ai pas pris de temps de replonger dans la factorisation en nombres premiers.
    "Le bon plaisir" c'est d'affecter x au plus grand des nombres premiers trouvés, y au nombre premier immédiatement inférieur et de regrouper tous les autres en z.
    Cette solution de regroupement en vaut une autre?
    Votre algo ne fonctionne pas pour les nombres premiers.

  26. #25
    Floklo

    Re : Trouver les x,y,z tel que x*y*z = N

    Bonjour tout le monde

    lorsqu'on exécute le code de Merlin, les solutions données sont:
    Code:
    [[1, 2, 18], [1, 3, 12], [1, 4, 9], [1, 6, 6], [2, 2, 9], [2, 3, 6], [3, 3, 4]]
    Est ce le triplet [1,6,6] que vous appelez doublons ?

  27. #26
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par Floklo Voir le message
    Bonjour tout le monde

    lorsqu'on exécute le code de Merlin, les solutions données sont:
    Code:
    [[1, 2, 18], [1, 3, 12], [1, 4, 9], [1, 6, 6], [2, 2, 9], [2, 3, 6], [3, 3, 4]]
    Est ce le triplet [1,6,6] que vous appelez doublons ?
    j'ai du mal lire le code, car selon moi, il donnerait 2 fois 1,6,6.
    si je me suis trompé, c'est tant mieux !
    Cdt
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  28. #27
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    je viens de le relire....
    pas de soucis,
    mais je fais tj tout trop vite ....
    ( même les calculs evt complexes que je tiens souvent à faire de tête uniquement par habitude )
    Dernière modification par ansset ; 24/08/2017 à 09h29.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  29. #28
    Floklo

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par ansset Voir le message
    ( même les calculs evt complexes que je tiens souvent à faire de tête uniquement par habitude )
    Ok pas de soucis, bien joué pour le calcul mental !

    Après juste par curiosité par rapport à la remarque de SULREN, je ne vois comment on peut trouver toutes les solutions du problèmes.
    On aura juste les entier qui divise N sans reste...

  30. #29
    ansset
    Animateur Mathématiques

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par Floklo Voir le message
    On aura juste les entier qui divise N sans reste...
    une remarque, le code ne donne pas (1,1,36) ?
    sinon tu as bien tous les diviseurs, même s'il apparaissent plusieurs fois.
    y'a quelque chose qui cloche là dedans, j'y retourne immédiatement !

  31. #30
    Floklo

    Re : Trouver les x,y,z tel que x*y*z = N

    Citation Envoyé par ansset Voir le message
    une remarque, le code ne donne pas (1,1,36) ?
    Non, ce qui est bizarre... ça devrait être la première solution trouvée.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. trouver n
    Par AsmaSasuki dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 20/12/2015, 00h15
  2. Où trouver un RWT 05 ?
    Par bartsamtab2 dans le forum Électronique
    Réponses: 3
    Dernier message: 02/08/2014, 13h43
  3. ou trouver des Led IR 8 mm 840 nm ?
    Par invite8182365d dans le forum Électronique
    Réponses: 4
    Dernier message: 28/12/2009, 11h10
  4. Réponses: 5
    Dernier message: 15/11/2008, 18h39
  5. Ou trouver ca ?
    Par invitee17aeca5 dans le forum Électronique
    Réponses: 8
    Dernier message: 01/08/2006, 07h50