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