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 30-01-2009 19:15:03
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 946
[Python] PGCD par l'axiome d'Euclide
# -*- coding: cp1252 -*-
def pgcd(a,b,pgcd):
c,d=max(a,b),min(a,b) # détermination du Dividende et du diviseur
while d>0:
c,d=d,c%d
pgcd = c
return pgcd
a,b=233625,15547875
pgcd=pgcd(a,b,1)
print
print "*** Calcul du PGCD (axiome d'Euclide) ***"
print " PGCD("+str(a)+","+str(b)+") = "+str(pgcd)
print
Affichage :
PGCD(233625,15547875) = 2625
Arx Tarpeia Capitoli proxima...
Hors ligne
#2 26-03-2012 04:40:03
- Arnaud Alies
- Invité
Re : [Python] PGCD par l'axiome d'Euclide
Voila mon script beaucoups plus optimiser... j'ai fais en 10 mins mais marche bien....
import sys
def main():
try:
try:
a = int(sys.argv[1])
b = int(sys.argv[2])
except:
sys.stdout.write("Entre des chiffres...")
a = input("A = ")
b = input("B = ")
except:
sys.stdout.write("Entre des chiffres\n\r")
sys.exit()
c = 1
while a != 0 and b != 0 and c != 0:
try:
c = (a%b)
a = (b%c)
b = (c%a)
except ZeroDivisionError:
pass
if a <= b <= c:
sys.stdout.write("Le pgcd de cette division est %i\n\r" % b)
elif b <= a <= c:
sys.stdout.write("Le pgcd de cette division est %i\n\r" % a)
elif a <= c <= d:
sys.stdout.write("Le pgcd de cette division est %i\n\r" % c)
return 0
if __name__ == '__main__':
main()
#3 07-05-2012 05:42:52
- Arnaud Alies
- Invité
Re : [Python] PGCD par l'axiome d'Euclide
j'ai refait rapidement (je deteste l'imperfection en programmation)
def pgcd(a, b):
r = a%b
while r != 0:
a = b
b = r
r = a%b
return b
def main():
try:
a = input("A = ")
b = input("B = ")
except NameError:
print("Entre des chiffres la prochaine fois!")
print("resultat: %i" % (pgcd(a,b)))
return 0
if __name__ == '__main__':
main()
#4 10-12-2017 11:23:15
- etienne
- Invité
Re : [Python] PGCD par l'axiome d'Euclide
easier:
def euclide(a,b):
u=a
v=b
while v!=0:
r=u%v
u=v
v=r
return u
#5 10-12-2017 12:48:50
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 946
Re : [Python] PGCD par l'axiome d'Euclide
Bonjour,
Le temps et la pratique faisant leur œuvre, on progresse...
Donc plus court encore et tout aussi simple :
while v!=0:
u,v=v,u%v
return u
euclide(233625,15547875)
Et enfin (Python toutes versions > 2.5) :
from fractions import gcd
print (gcd(233625,15547875))
^_^
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
Pages : 1
Discussion fermée