C# :: Aufgabe #69

11 Lösungen Lösungen öffentlich

Größter gemeinsamer Teiler

Anfänger - C# von hobeditz - 19.09.2014 um 20:58 Uhr
Entwickeln Sie ein Programm, welches den größten gemeinsamen Teiler zweier Zahlen ermittelt. Die Zahlen sollen vom Nutzer selber bestimmt werden.

Zitat:

Tipp:
Der euklidische Algorithmus könnte helfen.

Lösungen:

1x
vote_ok
von syzon (410 Punkte) - 20.09.2014 um 16:23 Uhr
Quellcode ausblenden C#-Code
using System;

namespace ggT
{
    class Program
    {
        static void Main(string[] args)
        {
            uint zahl1;
            uint zahl2;

            Console.WriteLine("Bitte geben Sie die erste Zahl (größer 0) ein!");
            while (!uint.TryParse(Console.ReadLine(), out zahl1))
                Console.WriteLine("Bitte eine Ganzzahl, größer 0, eingeben!");
            Console.WriteLine("Bitte geben Sie die zweite Zahl (größer 0) ein!");
            while (!uint.TryParse(Console.ReadLine(), out zahl2))
                Console.WriteLine("Bitte eine Ganzzahl, größer 0, eingeben!");

            if (zahl1 == zahl2)
            {
                Console.WriteLine("Da beide Zahlen gleichgroß sind, ist ihr ggT: " + zahl1);
                Console.ReadLine();
            }
            else
            {
                while (zahl1 != zahl2)
                {
                    if (zahl1 > zahl2)
                    {
                        if (zahl1 - zahl2 > 0)
                        {
                            zahl1 = zahl1 - zahl2;
                        }
                    }
                    else
                    {
                        if (zahl2 - zahl1 > 0)
                        {
                            zahl2 = zahl2 - zahl1;
                        }
                    }
                }
                Console.WriteLine("Der ggT der beiden Zahlen beträgt " + zahl1);
                Console.ReadLine();
            }
        }
    }
}
1x
vote_ok
von Mexx (2370 Punkte) - 23.09.2014 um 08:50 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GGT
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Geben Sie die erste Zahl ein");
            string input1 = Console.ReadLine(); 
            Console.WriteLine("Geben Sie die zweite Zahl ein");
            string input2 = Console.ReadLine();
            Console.WriteLine("");
            int a = Convert.ToInt32(input1);
            int b = Convert.ToInt32(input2);

            if (a == 0)
            {
                Console.WriteLine("Der grösste gemeinsame Teiler ist " + b);
            }
            else
            {
                while (b > 0)
                {
                    if (a > b)
                    {
                        a = a - b;
                    }
                    else
                    {
                        b = b - a;
                    }
                }
                Console.WriteLine("Der grösste gemeinsame Teiler ist " + a);
            }
            Console.ReadKey();
        }
    }
}
1x
vote_ok
von Sebskinator (50 Punkte) - 23.09.2014 um 09:16 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace größter_gemeinsamer_Teiler
{
    class Program
    {
        static void Main(string[] args)
        {
            int h = 0;
            Console.Write("Bitte geben Sie die erste Zahl ein: ");
            int a = Convert.ToInt32(Console.ReadLine());
            Console.Write("Bitte geben Sie die zweite Zahl ein:");
            int b = Convert.ToInt32(Console.ReadLine());
            while (b != 0)
            {
                h = a % b;
                a = b;
                b = h;
            }
            Console.WriteLine("Der größte gemeinsame Teiler ist {0}", a);
            Console.ReadLine();
        }
    }
}
1x
vote_ok
von Gisbert5020 (3120 Punkte) - 25.09.2014 um 10:41 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication9
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Geben Sie die erste Zahl ein:");
      int a = int.Parse(Console.ReadLine());
      Console.WriteLine("Geben Sie die zweite Zahl ein:");
      int b = int.Parse(Console.ReadLine());
      int teiler = ggT(a, b);
      Console.WriteLine("Der größte gemeinsame Teiler von {0} und {1} ist {2}", a, b, teiler);
      Console.ReadLine();
    }
    static int ggT(int a, int b)
    {
      if (b == 0)
        return a;
      return ggT(b, a % b);
    }
  }
}
vote_ok
von Beef.Jerky (60 Punkte) - 01.10.2014 um 13:32 Uhr
Quellcode ausblenden C#-Code
 class Program
    {
        static void Main(string[] args)
        {
            
            int a = 0, b = 0, rest=1;
            string stra, strb;
            bool aoderb = false;
            Console.WriteLine("Gib zahl a ein: ");
            stra = Console.ReadLine();
            Console.WriteLine("Gib Zahl b ein: ");
            strb = Console.ReadLine();
            try
            {
                a = Convert.ToInt16(stra);
                b = Convert.ToInt16(strb);
            }
            catch(Exception ex)
            {
                Console.Write(ex);
                
            }

            while (rest != 0)
            {
                if (a > b)
                {
                    rest = a % b;
                    a = b;
                    b = rest;
                    aoderb = true;
                }
                else
                {
                    rest = b % a;
                    b = a;
                    a = rest;
                    aoderb = false;
                }
                
            }
            if (aoderb == true)
            {
                Console.WriteLine(a);
            }
            else
            {
                Console.WriteLine(b);            
            }
            
            Console.ReadLine();
        }
    }
vote_ok
von peterindies (440 Punkte) - 03.12.2014 um 17:11 Uhr

Zitat:


Habe hier den Euklidischen Algorithmus verwendet.

Quellcode ausblenden C#-Code
using System;

namespace ConsoleApplication11
{
    internal class Rest
    {
        public double restzahlberrechnung(int ergebnisholen, double zahl2, double zahl1)
        {
            int neuezahl = ergebnisholen;
            double zwischenergebnis = neuezahl * zahl2;
            double restzahl = zahl1 - zwischenergebnis;
            return restzahl;
        }
    }
    internal class Program
    {
          private static void Main(string[] args)
        {
            Console.WriteLine("Berrechnung eines gemeinsamen Teilers zweier Zahlen:");
            start:
            Rest klasse = new Rest();

            Console.WriteLine("erste zahl:");
            string erstezahl = Console.ReadLine();
            Console.WriteLine("zweite zahl:");
            string zweitezahl = Console.ReadLine();
            double zahl1;
            double zahl2;
            if (double.TryParse(erstezahl, out zahl1) && double.TryParse(zweitezahl, out zahl2))
            {
                double restzahl = 1;
                double altergebnis;
                double restzahlneu = 1;

                while (restzahl != 0)
                {
                    altergebnis = zahl1 / zahl2; 
                    int ergebnis = (int)altergebnis; 
                    restzahl = klasse.restzahlberrechnung(ergebnis, zahl2, zahl1); 
                    altergebnis = zahl2 / restzahl;
                    ergebnis = (int)altergebnis; 
                    restzahlneu = klasse.restzahlberrechnung(ergebnis, restzahl, zahl2); 
                    if (restzahlneu == 0.0)
                    {
                        break;
                    }

                    altergebnis = restzahl / restzahlneu;
                    ergebnis = (int)altergebnis; // 2
                    restzahl = klasse.restzahlberrechnung(ergebnis, restzahlneu, restzahl); 
                    double secondnumber = 0;
                    if (restzahl != 0.00)
                    {
                        secondnumber = restzahlneu;
                        double newrestzahl = restzahl;

                        while (newrestzahl != 0.00)
                        {
                            restzahlneu = secondnumber / newrestzahl;
                            int ganzesergebnis = (int)restzahlneu;
                            double zwischennummer = newrestzahl;
                            newrestzahl = klasse.restzahlberrechnung(ganzesergebnis, newrestzahl, secondnumber); 
                            secondnumber = zwischennummer;
                        }

                        restzahl = newrestzahl;
                        Console.WriteLine("Der gemeinsame Teiler ist {0}", secondnumber);
                        Console.ReadLine();
                        goto start;
                    }
                }

                if (restzahlneu == 0.0)
                {
                    Console.WriteLine("Der gemeinsame Teiler ist {0}", restzahl);
                    goto start;
                }
                
                Console.WriteLine("Der gemeinsame Teiler ist {0}", restzahlneu);
                Console.ReadLine();
            }
            else
            {
                Console.WriteLine("Bitte gültige Zahlen eingeben");
                goto start;
            }
        }
    }
}
vote_ok
von niknik (1230 Punkte) - 13.08.2015 um 14:36 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ggt
{
    class Program
    {

        public static int ggT(int a, int b)
        {
            int h;
            while (b != 0)
            {
                h = a % b;
                a = b;
                b = h;
            }
            return a;
        }

        static void Main(string[] args)
        {
            int zahl1, zahl2;
            do
            {
                Console.WriteLine("Erste Zahl: ");
            } while (!int.TryParse(Console.ReadLine(), out zahl1));
            do
            {
                Console.WriteLine("Zweite Zahl: ");
            } while (!int.TryParse(Console.ReadLine(), out zahl2));
            int ggt = ggT(zahl1, zahl2);

            Console.Clear();
            Console.WriteLine("Der größte gemeinsame Teiler von\n{0} und\n{1} ist\n{2}", zahl1, zahl2, ggt);
            Console.ReadLine();
        }
    }
}
vote_ok
von stbehl (1640 Punkte) - 15.02.2018 um 10:03 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TrainYourProgrammer69
{
    class Program
    {
        static void Main(string[] args)
        {
            int zahlEins, zahlZwei;

        
            Console.WriteLine("BERECHNUNG DES GROESSTEN GEMEINSAMEN TEILERS");
            Console.Write("Geben Sie die erste Zahl ein: ");
            while (!Int32.TryParse(Console.ReadLine(), out zahlEins))
            {
                Console.Write("Geben Sie die erste Zahl ein: ");
            }
            Console.Write("Geben Sie die zweite Zahl ein: ");
            while (!Int32.TryParse(Console.ReadLine(), out zahlZwei))
            {
                Console.Write("Geben Sie die zweite Zahl ein: ");
            }


            int anzahlTeilerEins = AnzahlTeiler(zahlEins);
            int anzahlTeilerZwei = AnzahlTeiler(zahlZwei);
            int[] teilerEins = Teiler(zahlEins, anzahlTeilerEins);
            int[] teilerZwei = Teiler(zahlZwei, anzahlTeilerZwei);

            for (int i = 0; i<=anzahlTeilerEins-1; i++)
            {
                for (int k = 0; k <= anzahlTeilerZwei-1; k++)
                {
                    if (teilerEins[i] == teilerZwei[k])
                    {
                        Console.WriteLine("Der groesste gemeinsame Teiler ist " + teilerEins[i]);
                        Console.ReadKey();
                        return;
                    }
                   
                }
            }
            Console.WriteLine("Es gibt keinen gemeinsamen Teiler.");
            Console.ReadKey();
        }


        static int AnzahlTeiler(int zahl)
        {
            int anzahlTeiler = 0;

            for (int i = 0; i <= zahl-1; i++)
            {
                if (zahl % (zahl - i) == 0)
                {
                    anzahlTeiler++;
                }
            }
            return anzahlTeiler;
        }

        static int[] Teiler(int zahl, int anzahlTeiler)
        {
            int naechsteStelle = 0;

            
            int[] teiler = new int[anzahlTeiler];
            for (int i = 0; i <= zahl-1; i++)
            {
                if (zahl % (zahl - i) == 0)
                {
                    teiler[naechsteStelle] = zahl - i;
                    naechsteStelle++;
                }
            }

            return teiler;
        }
    }
}
vote_ok
von stcalvin (970 Punkte) - 25.05.2018 um 13:35 Uhr
Quellcode ausblenden C#-Code
        static void Groesste_gemeinsame_Teiler()
        {
            int zahlA, zahlB, temp;

            //Console.Write("Zahl 1: ");
            zahlA = 4875346;
            //Console.Write("Zahl 2: ");
            zahlB = 123798;

            temp = zahlA;

            while (zahlA % temp != 0 || zahlB % temp != 0)
            {
                temp--;
            }

            Console.WriteLine("Größte gemeinsame Teiler: " + temp);
        }

        static void Groesste_gemeinsame_Teiler_euklid()
        {
            int a = 4875346, b = 123798, c = 0;

            do
            {
                c = a % b;
                a = b;
                b = c;
            } while (b != 0);

            Console.WriteLine("Größte gemeinsame Teiler: " + a);
        }
vote_ok
von hollst (13980 Punkte) - 17.04.2021 um 15:23 Uhr
Quellcode ausblenden C#-Code
Es geht mit einer einzigen Code-Zeile:

public static int Gcd(int a, int b) => a == 0 ? b : Gcd(b % a, a);
1 Kommentar
vote_ok
von hollst (13980 Punkte) - 18.04.2021 um 17:33 Uhr
Es genügt eine Code-Zeile:

Quellcode ausblenden C#-Code
public static int Gcd(int a, int b) => a == 0 ? b : Gcd(b % a, a);
2104562

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.