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