C# :: Aufgabe #276 :: Lösung #2

2 Lösungen Lösungen öffentlich
#276

Ägyptische Bruchrechnung

Fortgeschrittener - C# von hollst - 22.12.2019 um 22:50 Uhr
Gegeben seien zwei positive Ganzzahlen Z (wie Zaehler) und N (wie Nenner) mit N > Z
und Z sei kein Teiler von N.

Der Bruch Z/N ist immer als Summe der Kehrwerte positiver Ganzzahlen (Stammbrüche) darstellbar,
wobei es meist mehrer Möglichkeiten der Darstellung gibt.

Beispiele:

5/6 = 1/2 + 1/3 = 1/2 + 1/4 + 1/12 = 1/2 + 1/4 + 1/13 + 1/156 = ...

17/39 = 1/3 + 1/10 + 1/390 = ...

Man schreibe ein Programm, das Z und N entgegennimmt und die Zahlen der Stammbrüchesumme mit den wenigsten Summanden ausgibt.

Also obere Beispiele:

Input 5 und 6, Output 2 und 3,
Input 17 und 39, Output 3, 10 und 390.

Viel Spaß.
#2
vote_ok
von miami666 (300 Punkte) - 19.02.2020 um 08:08 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace aufg_276
{
    class Program
    {
        static void aegBruch(int z, int n)
        {
 
            if (z == 0 || n == 0) return;
 
            if (n % z == 0)
            {
                Console.WriteLine("1/" + n / z);
                return;
            }

            if (z % n == 0)
            {
                Console.WriteLine("kein echter Bruch");
                return;
            }

            if (z > n)
            {
                Console.Write(z / n + " + ");
                aegBruch(z % n, n);
                return;
            }
            int n2 = n / z + 1;
            Console.Write("1/" + n + " + ");

           
            aegBruch(z * n2 - n, n * n2);
        }

        static void Main(string[] args)
        {

            Console.WriteLine("Zaehler eingeben:");
            int zaehler=Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Nenner eingeben:");
            int nenner= Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Aegyptischer Brueche von " + zaehler + "/" + nenner + " sind\n ");
            aegBruch(zaehler, nenner);
            Console.ReadKey();
        }
    }
}

Kommentare:

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

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

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.