Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 21-12-2014 14:01:48

aminemoi
Membre
Inscription : 25-11-2014
Messages : 17

ppcm de 2 nombres entiers

Salut à tous

j'espère que vous me corrigiez cette algorithme s'il y en a des fautes

l'énoncé : Ecrire un algorithme qui permet de calculer et d'afficher le PPCM de 2 nombres entiers


algorithme PPCM
var a , b ,c ,d : entier

debut

"Ecrire " entrez a, b

lire a,b

a <- c

b <- d

tant que a <> b

si a > b alors

b+d <- b

sinon

a+c <- c

fin tant que

a  ," :Ecrire " le PPCM est

fin

Merci

Hors ligne

#2 21-12-2014 20:39:37

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 948

Re : ppcm de 2 nombres entiers

Salut,

Programmation avec quel langage ?
En écrivant :
a <-- c tu veux dire ranger a dans c ?
Avec une calculette programmable Texas, on écrit  c <- a

Bon, la traduction de ton code en Python ne fonctionne pas : j'obtiens une boucle infinie dont on ne sort pas...

J'ai trouvé l'erreur :

var a , b ,c ,d : entier
debut
    "Ecrire  entrez a, b"
    lire a,b
    c=a
    d=b

    Tant que a <> b
            si a > b alors
                 b=b+d
            sinon si a<b
               a=a+c  <--- Là tu as écrit : a+c <- c
     Fin tant que

    Ecrire " le PPCM est"
    Ecrire a
fin

Tu dois modifier les valeurs de a et b, pas celles de c et b...
En fait la méthode est celle du calcul des multiples consécutifs de a et b, par ajouts de c et d, jusqu'à ce qu'on obtienne deux multiples de c et d égaux.
Attention aussi que le sinon tout court est "techniquement" incorrect, même, si cela fonctionne quand même : si on n'a pas a > b, c'est que a < b, certes mais aussi a = b, non (a>b) c'est a<=b
Traduction Python :

a = 140
b = 160

c,d=a,b
while a!=b:
    if a > b:
        b+=d      
    elif a < b:
        a+=c
    print (a,b)    

print ()        
print ("Le PPCM de", c,"et",d,"est :",a)

Sortie :

280 160
280 320
420 320
420 480
560 480
560 640
700 640
700 800
840 800
840 960
980 960
980 1120
1120 1120

Le PPCM de 140 et 160 est : 1120

Je me suis abstenu de demander l'entrée des nombres a et b, je les ai fournis directement : gain de temps pour le débogage...


On peut aussi utiliser le fait que : ppcm(a,b)*pgcd(a,b) = a*b
On calcule pgcd(a,b) par l'algorithme d'Euclide et on divise le produit de a et b par ce PGCD...

@+

Dernière modification par yoshi (22-12-2014 13:39:41)


Arx Tarpeia Capitoli proxima...

Hors ligne

#3 22-12-2014 13:33:33

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 948

Re : ppcm de 2 nombres entiers

Bonjour,

Le même avec AlgoBox (langage particulièrement "verbeux") :

VARIABLES
        a  EST_DU_TYPE  NOMBRE
        b  EST_DU_TYPE  NOMBRE
        c  EST_DU_TYPE  NOMBRE
        d  EST_DU_TYPE  NOMBRE
    DEBUT_ALGORITHME
        AFFICHER   " Entrez les nombres a et b : "
        LIRE  a
        LIRE  b
        c  PREND_LA_VALEUR a
        d  PREND_LA_VALEUR b
        TANT_QUE  ( a ! = b) FAIRE
            DEBUT_TANT_QUE
            SI   ( a>b)   ALORS
                DEBUT_ SI
                b   PREND_LA_VALEUR b+d
                FIN_SI
                SINON
                    DEBUT_SINON
                    a  PREND_LA_VALEUR a+c
                    FIN_SINON
            AFFICHER  a
            AFFICHER   "   "
            AFFICHER   b
            FIN_TANT_QUE
        AFFICHER   "   "
        AFFICHER  " Le   PPCM de "
        AFFICHER   c
        AFFICHER  "   e t   "
        AFFICHER   d
        AFFICHER   "   e s t  "
        AFFICHER   a
    FIN_ALGORITHME

Sortie :

***Algorithme lancé***
Entrez les nombres a et b :
Entrer a : 140
Entrer b : 180
280 180
280 360
420 360
420 540
560 540
560 720
700 720
840 720
840 900
980 900
980 1080
1120 1080
1120 1260
1260 1260

Le PPCM de 140 et 180 est 1260
***Algorithme terminé***

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#4 16-12-2017 11:58:39

Ahlem MDH
Invité

Re : ppcm de 2 nombres entiers

Merci

#5 21-01-2018 11:57:54

Boris Love
Invité

Re : ppcm de 2 nombres entiers

Je ne suis pas d'accord avec ce algo sauf ci c'est un language que je ne metrise pas.
Fait un peu le PPCM (9,6).je vais resté la solution!!!

#6 21-01-2018 13:21:33

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 948

Re : ppcm de 2 nombres entiers

Bonjour,

Avec Python :

9 12
18 12
18 18

Le PPCM de 9 et 6 est : 18

Avec AlgoBox :

***Algorithme lancé***
Entrer les nombres a et b :
9      12
18      12
18      18
Le PPCM de 9 et 6  est  18
***Algorithme terminé***

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#7 09-04-2018 12:38:44

PROGRAMING
Invité

Re : ppcm de 2 nombres entiers

PPCM EN LANGAGE C#



---------------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EXERCICE22
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Veuillez saise le premier nombre:\n");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("Veuillez saise le Deuxieme nombre:\n");
            int b = int.Parse(Console.ReadLine());

            int c = a;
            int d = b;
            while (a != b)
            {
                if (a > b)
                    b += d;
                else if (a < b)
                    a += c;
                Console.WriteLine(+a+ ","+ b);
            }

            Console.WriteLine("Le PPCM de  " + c + " et " + d + " est : " + a);
            Console.ReadKey();
        }
    }
}

--------------------------------------------------------------------------------------------------------------------

#8 08-01-2019 19:26:36

maz
Invité

Re : ppcm de 2 nombres entiers

Program PPCM;
var
max,min,a,b:Integer ;


Begin
WriteLn(' Donner la valeur de a puis b  ');
Readln(a,b);
if (a>b) Then
Begin
    max:=a ;
    min:=b ;
end
    Else
    Begin
        max:=b;
    min:=a;
    end;
        while (max mod min <>0) do
        begin
            max:= max +a+b-min ;
    end;
    WriteLn(' Le PPCM est ');
WriteLn(max);
    end.

Pied de page des forums