'Ce progamme est basé sur une propriété mathématique du PGCD:
'A savoir PGCD(A,B)=PGCD(|B-A|,A) .
'Ce qui se réalise très facilement par récurence.
'L'algorithme s'arrète lorsque A=B
'Il traite aussi le cas PGCD(0,0)=1
'On peut calculer le PPCM de la même façon
'A partir de la propriété du PGCD énoncée plus haut et de la formule
'du PPCM : PPCM(A,B)=(A*B)/PGCD(A,B)
'On obtient la formule de récurence:'PPCM(A,B)=PPCM(|B-A|,A)*(B/|B-A|)
'et les conditions d'arret: PPCM(0,0)=0 et PPCM(A,A)=A
'On remarquera que le premier cas d'arret est un cas particulier
'du second (A=0), Il n'y aura donc qu'un seul test dans le code
Source / Exemple :
Public Function PGCD(A, B)
If A = 0 And B = 0 Then PGCD = 1
Exit Function 'PGCD(0,0)=1
End If
PGCD = IIf(A = B, A, PGCD(Abs(B - A), A))
End Function
Public Function PPCM(A, B)
PPCM = IIf(A = B, A, PPCM(Abs(B - A), A) * (B / Abs(B - A)))
End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.