CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] PGCD des éléments d'une liste

Naked-_-Snake
Naked-_-Snake
Niveau 10
24 décembre 2013 à 17:32:18

Bonsoir :)

Je reviens vers vous car j'aimerais obtenir le plus grand diviseur commun(PGCD) de tous les éléments d'une liste, sachant que le nombres des éléments de cette liste varie selon les variables entrées, je ne connais donc pas la longueur de cette liste.
Pour l'instant j'ai fais ça mais je ne sais pas si cela est vrai :

for k in range(0,len(L)-1):
M+=[fct34(L[k],L[k+1])]
d=min(M)

L est la liste de tous les éléments. J'ai eu l'idée de crée une autre liste M où je mets les PGCD des éléments k et k+1 de la liste L, k variant entre 0 et la longueur de L moins 1.
Ma question est donc de savoir si le PGCD de tous les éléments de L est le minimum de la liste M.

Merci de votre aide : :-)

Pseudo supprimé
Pseudo supprimé 24 décembre 2013 à 20:32:40

"Ma question est donc de savoir si le PGCD de tous les éléments de L est le minimum de la liste M."

non. par exemple avec [10,70,7] ton code fait

m = [pgcd(10,70), pgcd(70,7)] -> [10,7]

min(m) retourne 7 hors 10 n'est pas divisible par 7.

si tu réfléchis bien, tu verras que tu n'as pas besoin d'une deuxième liste. au pire, essaie de le faire sans boucle mais avec une fonction récursive.

godrik
godrik
Niveau 30
24 décembre 2013 à 20:40:32

Encore une fois, le probleme est d'ordre conceptuel. Qu'est ce que c'est un pgcd? Ca s'extrait de la decomposition en facteur premier de chaque nombre. Et pour chaque nombre premier tu dois le voir apparaitre autant de fois que dans le minimum nombre de fois ou I'll apparait. Note que le ppcm n'est pas plus complique.

Naked-_-Snake
Naked-_-Snake
Niveau 10
25 décembre 2013 à 12:18:58

Merci de vos réponses.
Sachant que j'aimerais utiliser ma "fct34" c'est à dire la fonction "calcul du PGCD de deux nombres" que j'ai crée, comment dois-je m'y prendre ?

Naked-_-Snake
Naked-_-Snake
Niveau 10
25 décembre 2013 à 14:36:39

J'ai fais un nouveau code, toujours avec une liste car je ne vois pas comment faire autrement.
Le voilà :

for k in range(0,len(L)-1):
M+=[fct34(L[k],L[k+1])]
for n in range(0,len(M)):
if L[k]%M[n]!=0:
M.pop(n)
d=max(M)

J'ai laissé la liste M où j'insère les PGCD des éléments k et k+1 de la liste L. Ensuite, pour n variant de 0 à longueur de M, je regarde le reste de la division euclidienne de l'élément L[k] par l'élément M[n]. Si celui-ci n'est pas nul, je retire l'élément n de la liste M. Ainsi, il ne devrait plus rester dans M que des éléments qui divisent tous les éléments de L. En prenant le maximum de M, j'obtiens donc le PGCD des éléments de L. Vrai ?

Pseudo supprimé
Pseudo supprimé 25 décembre 2013 à 19:59:48

pas besoin de plus que

    pgcd = L[0]
    for number in L[1:]:
        pgcd = ??
    print(pgcd)

si tu connais pas la notation list[start:end:step] : http://bergbom.blogspot.be/2011/04/python-slice-notation.html

Naked-_-Snake
Naked-_-Snake
Niveau 10
25 décembre 2013 à 21:40:59

Ah oui merci beaucoup.
J'obtiens donc finalement :

d=L[0]
for k in L[1:]:
d=fct34(d,k)
return (d)

d correspondant au PGCD des éléments de L et fct34 ma fonction PGCD.
Mon programme fonctionne à présent, merci beaucoup ! :-)))

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment