Τι μπορώ να τα ανεβάσετε εδώ για τον υπολογισμό του gcd με τρεις αριθμούς

ψήφοι
1

Έχω να γράψω μια programm που υπολογίζει το ΠΔΠ με τρεις τον αριθμό με τον Ευκλείδη alogrithmus

Έχω ήδη γράψει το programm με 2 αριθμούς που λειτουργεί πολύ καλά, αλλά δεν έχω καμία ιδέα για το πώς μπορώ να κάνω το ίδιο με τρεις αριθμούς (το μεγάλο πρόβλημα είναι ότι πρέπει να είναι με Ευκλείδης algorithmus)

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});
Δημοσιεύθηκε 09/10/2019 στις 18:57
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

Μπορείτε να γράψετε μια μέθοδο που παίρνει το ΠΔΠ από 2 αριθμούς, και μετά την κλήση με 2 αριθμούς, εξακολουθούν να την αποκαλούν με αυτό το αποτέλεσμα και τον επόμενο αριθμό μέχρι να μην υπάρχουν περισσότεροι αριθμοί αριστερά.

Για παράδειγμα, μπορούμε να γράψουμε μια μέθοδο για να πάρει το ΠΔΠ δύο αριθμών (δανεισμένη από αυτό το site ):

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;
}

Τότε μπορούμε να γράψουμε μια άλλη μέθοδο που λαμβάνει σε ένα μεταβλητό αριθμό intεπιχειρήματα (με τη χρήση ενός paramsπίνακα), η οποία παίρνει το αποτέλεσμα των πρώτων 2 αριθμούς, και στη συνέχεια συνεχίζει να ενημερώσετε αυτήν την τιμή με το πέρασμα μαζί με το επόμενο αριθμό στη μέθοδο GCD μας:

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;
}

Τώρα μπορούμε να καλέσετε τη μέθοδο με όσες αριθμούς όπως μας αρέσει:

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
Απαντήθηκε 09/10/2019 στις 19:57
πηγή χρήστη

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