C# :: Aufgabe #69 :: Lösung #6

11 Lösungen Lösungen öffentlich
#69

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.

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

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2104475

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.