Was kann ich hier hinzufügen, die GCD mit drei Zahlen zu berechnen

stimmen
1

Ich muss ein Programm schreiben, das die GCD mit drei Nummer mit der Euklid alogrithmus berechnen

Ich habe bereits geschrieben, das Programm mit zwei Zahlen, die sehr gut funktioniert, aber ich habe keine Ahnung, wie kann ich das gleiche mit drei Zahlen zu tun (das große Problem ist es mit Euklid algorithmus sein sollte)

if (z1==z2)
            {
                Console.WriteLine($The gcd of two number is {z1});
            }


            else { 

            do
            {

                    r = z1 % z2;
                    gcd = z1;
                    z1 = z2;
                    z2 = r;





                } while (r != 0);

            Console.WriteLine($The gcd of two number is {gcd});
Veröffentlicht am 09/10/2019 um 18:57
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
2

Sie können eine Methode schreiben, die die GCD von 2 Zahlen bekommen, und es mit zwei Zahlen nach dem Aufruf, auch weiterhin nennen mit diesem Ergebnis und die nächsten Nummer, bis es keine mehr Zahlen links sind.

Zum Beispiel können wir eine Methode , um die GCD von zwei Zahlen (entlehnt schreiben dieser Seite ):

public static int GCD(int first, int second)
{
    while (first != 0 && second != 0)
    {
        if (first > second) first %= second;
        else second %= first;
    }

    return first == 0 ? second : first;
}

Dann können wir eine andere Methode schreiben , die in einer variablen Anzahl von nimmt intArgumente (unter Verwendung eines paramsArray), die das Ergebnis der ersten 2 Zahlen erhält, und fährt dann fort , diesen Wert zu aktualisieren , indem sie zusammen mit der nächsten Nummer in unseren GCD Methode übergeben:

public static int GCD(params int[] numbers)
{
    // Do some argument validation and return 0 or throw an exception
    if (numbers == null || numbers.Length == 0) return 0;

    // Start with the result being just the first number
    var result = numbers[0];

    // Then get the GCD of the result and the next number 
    // and store that back in the result variable
    for(int i = 1; i < numbers.Length;i++)
    {
        result = GCD(result, numbers[i]);
    }

    return result;
}

Jetzt können wir die Methode, mit so vielen Zahlen nennen, wie wir wollen:

Console.WriteLine(GCD(9, 18, 27));              // Output: 9
Console.WriteLine(GCD(4, 8));                   // Output: 4
Console.WriteLine(GCD(25, 15, 100, 30, 9000));  // Output: 5
Beantwortet am 09/10/2019 um 19:57
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more