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

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.

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

Kommentare:

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

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

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.