Programme qui calcul le ppcm et le pgcd

Soyez le premier à donner votre avis sur cette source.

Snippet vu 38 393 fois - Téléchargée 19 fois

Contenu du snippet

Algorithme qui sert à calculer le plus grand diviseur commun ,et le plus petit multiple commun.
Cela dit ,il est fait avec le langage C ,il peut être modifié vu que je suis encore un novice :).
Peut éventuellement servir aux novices comme moi.S'il y a une erreur j'aimerai bien en être informé,merci d'avance.

Source / Exemple :


#include<stdio.h>
#include<conio.h>

main()
{
int a,b,x,t,m;
printf("Entrez le premier entier positif:\t");
scanf("%d",&a);
printf("\nEntrez le deuxieme entier positif:\t");
scanf("%d",&b);
if (b>a)
{x=b;
b=a;
a=x;}

if (a%b==0)
printf("\nLe PPCM est :\t%d",a);
  else
    {t=(a*b);
while(b != 0)
{x = a%b;
 a = b;
 b = x;}
 m=t/a;
printf("\nLe PPCM est :\t%d ",m);}
while(b != 0)
{x = a%b;
 a = b;
 b = x;}
printf("\nLe PGCD est :\t%d", a);
getch();
}

A voir également

Ajouter un commentaire

Commentaires

AnoSantino
Messages postés
13
Date d'inscription
samedi 9 janvier 2010
Statut
Membre
Dernière intervention
2 mars 2012
-
Merci de vos commentaires mais y'a une année de cela je venais à peine de commencer à utiliser la programmation( ne connaissons ni les fonctions ,ni la récursivité,je ne faisais que découvrir la programmation en langage C) .Maintenant quand je revois vos propositions elles sont nettement meilleures ,juste que je ne pouvais pas les comprendre à l'époque,merci.
abiolos
Messages postés
3
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
23 janvier 2010
-
Salut à tous.Il faut comprendre ce que c'est que le PPCM.Si on dit que le PPCM de X et Y est Z alors Z mode X = Z mode Y=0.
Voici alors l'algo que je propose:

ALGO: PPCFM

VAR: X, Y,a: ENTIERS

aFFICHER; Veuillez saisir un nombre
Saisir: X
Afficher: Veuillez saisir le second nombre
Saisir: Y
Si X<Y alors
a .=X
Répeter a mode X et a mode Y jusqu'à a mode X = a mode Y=0


Fin
Pariterre
Messages postés
15
Date d'inscription
mercredi 6 août 2008
Statut
Membre
Dernière intervention
5 septembre 2010
-
Qu'est-ce que tu veux dire?
si tu parles d'expliquer la fonction, c'est parce qu'elle parle d'elle-même n fait :
exemple :
int PGCD(int a, int b)
{
if (b == 0)
return a;
else
return PGCD(b, a%b);
}

Signifie :
int PGCD(int a, int b) //Pour la fonction PGCD, cette fonction a besoin du paramètre a et du paramètre b (sans modifier les originaux) et lorsquelle finira envoyera à celui qui l'a appelé un integer.

if (b == 0)
return a;
//Si b est égal à 0, il faut retourner (envoyer, c'est le int) la valeur "a".

else
return PGCD(b, a%b);
//Sinon, revoyer la valeur donnée par la fonction PGCD avec les valeurs suivantes. Ici, la fonction appelle s'appelle elle-même. Ce qui va se passer, c'est que dans la valeur "a" elle va y placer la quantité "b" et dans la variable "b" elle y placera la quantité "a modulo b".

Au final, un moment donné la variable "b" égalera 0 et donc la fonction arrêtera de s'appeler elle-même et renvoyera au "main" la valeur de "a". Celui-ci, par définition [voir wikipédia PGCD] vaudra le PGCD.

C'était ta question?
abiolos
Messages postés
3
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
23 janvier 2010
-
pourqoi n'écrit on pas les algo en français
Pariterre
Messages postés
15
Date d'inscription
mercredi 6 août 2008
Statut
Membre
Dernière intervention
5 septembre 2010
-
Ah ouais! beaucoup plus encore! Je n'y avais pas pensé à celle-là ;)
Pour optimiser encore, on peut même enlever le "else"

Et hop! une variable intermédiaire de moins :D

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.