PPCM en Scheme (Lisp)

PPCM en Scheme (Lisp) - Divers - Programmation

Marsh Posté le 19-09-2004 à 21:26:32    

voila jviens de faire ce code pour déterminer le plus petit commun multiple de 2 nombres
 
ca semble fonctionner pour plusieurs cas, mais ca ne fonctionne pas si je passe 42 et 30 par exemple, ca semble tourner en boucle
 
pourtant ca devrait donner 210 assez rapidement, et je vois pas trop pourquoi ca fonctionne pas :/
 

Code :
  1. (define (ppcm n1 n2)
  2.   (define (iter x y)
  3.     (cond ((= x y) x)
  4.           ((> x y) (iter x (+ y y)))
  5.           ((< x y) (iter (+ x x) y))))
  6.   (cond ((= n1 0) "impossible" )
  7.         ((= n2 0) "impossible" )
  8.         ((< n1 0) (ppcm (- n1) n2))
  9.         ((< n2 0) (ppcm n1 (- n2)))
  10.         (else
  11.          (iter n1 n2))))

Reply

Marsh Posté le 19-09-2004 à 21:26:32   

Reply

Marsh Posté le 19-09-2004 à 21:39:13    

c'est on algo qui est pas bon je pense
 
cela dit je suis incapable de m'en souvenir, le pgcd et comment calculer ensuite le ppcm, ça oui :d

Reply

Marsh Posté le 19-09-2004 à 21:47:02    

bin jcrois que ca revient pas mal à ca (sauf en récursif)
 

tant que x != y
 si x > y
  y += y
 si x < y
  x += x


 
si on test sur papier pour le cas 42 et 30
 


42 30
42 60
84 60
84 90
126 90
126 120
126 150
168 150
168 180
210 180
210 210


 
ca semble fonctionner :/

Reply

Marsh Posté le 19-09-2004 à 21:50:13    

euh si on suit ton algo, à chaque pas, x ou y est doublé
 
 
dès la 4ème ligne, ça marche pu ton truc ... fait à partir du pgcd :D

Reply

Marsh Posté le 19-09-2004 à 21:51:16    

Taz a écrit :

euh si on suit ton algo, à chaque pas, x ou y est doublé
 
 
dès la 4ème ligne, ça marche pu ton truc ... fait à partir du pgcd :D


 
ah putin faut j'additionne n1 ou n2, quel con je suis :D
 
merci pour ton oeil de lynx

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed