GGT von 4 Zahlen (oder mehreren)

michelr

Grünschnabel
Hallo zusammen,

damit ich in meinem Programm weiterkomme muss ich zur Berechnung eines Punktes den größten gemeinsamen Teiler von 4 natürlichen Zahlen ermitteln.
Wie man den ggt von 2 natürlichen Zahlen ermittelt habe ich mit dem Euklid-Verfahren (durch Hilfe von Mod) ermittelt. Aber das Euklid-Verfahren kann ich ja nur für 2 natürlichen Zahlen anwenden.

Kann mir jemand sagen auf welche Weise ich am einfachsten und am schnellsten den ggt von 4 Zahlen ermittle.
Ich hoffe es kann mir jemand von euch weiterhelfen, denn ich bin noch blutiger C++ Anfänger.
Vielen Dank und Gruß

michel
 
bin mir nicht ganz sicher, aber es müsste so gehen (vielleicht erst evaluieren)
Man soritert die Zahlen a ist die größte.
GGT(a,b,c,d ) = GGT(a, GGT(b, GGT(c,d)))

ohne sortieren müsste es acuh gehen
 
Mit der Möglichkeit geht's:
Code:
C++:
int ggt_berechne(int,int,int,int);
int ggt(int,int);

int ggt_berechne(int a,int b,int c,int d)
{
int Speicher;
bool richtig=false;
    
while (richtig!=true)
    {
    if (a>b)
        {
        if (b>c)
                {
                if (c>d)
                                {
                                richtig=true;
                                }
                else
                                {
                                Speicher=c;
                                c=d;
                                d=Speicher;
                                }
                }
        else
                {
                Speicher=b;
                b=c;
                c=Speicher;
                }
        }
    else
        {
        Speicher=a;
        a=b;
        b=Speicher;
        }
    }
    
return ggt(a,ggt(b,ggt(c,d)));
}

int ggt(int a,int b)
{
for (int x=2;x<b;x++)
    {
    if (a%x==0 && b%x==0)
        {
        return x;
        }
    else
        {}
    }
}
 
Zurück