Laden...

Ulam'sche Vermutung

Erstellt von Irina vor 2 Jahren Letzter Beitrag vor 2 Jahren 472 Views
I
Irina Themenstarter:in
20 Beiträge seit 2021
vor 2 Jahren
Ulam'sche Vermutung

Hallo zusammen,

ich habe eine Aufgabe zu knacken, wobei es um die Ulam'sche Vermutung geht. Die Aufgabe lautet:

Wenn Sie mit einer Zahl "zahl > 0" beginnen und diese Zahl wiederholt halbieren – sofern sie gerade ist –, oder aber mit 3 multiplizieren und 1 addieren – sofern sie ungerade ist –, dann landen Sie (dies ist bislang nicht allgemein gültig bewiesen) irgendwann bei der Zahl 1.

Planen Sie eine Methode UlamVermutung. Die Methode soll zunächst die Zahl, mit der sie aufgerufen wurde, ausgeben und sodann in jedem Berechnungsschritt den aktuellen Wert der Variablen "zahl" ausgeben. Die Berechnung endet, wenn zahl den Wert 1 erreicht hat. Hinweis: Sie werden eine Schleife benötigen.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ESAAufgabe4
{
    class UlamVermutung
    {
        public int Ulam(int zahl)
        {
            Console.WriteLine("Ulamsche Berechnung:" + zahl);

            while (zahl != 1)
            {
                if(zahl % 2 == 0)
                {
                    zahl = zahl / 2;
                    Console.WriteLine("Ergebnis:" + zahl);
                }
                else if(zahl % 2 != 0)
                {
                    zahl = zahl * (3 + 1);
                    Console.WriteLine("Ergebnis:" + zahl);
                }
            }
            return zahl;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            UlamVermutung ula = new UlamVermutung();
            ula.Ulam(3);
        }
    }
}

Der Code an sich ist Fehlerfrei geschrieben. Wenn ich in der Main Methode unter "ula.Ulam" die Zahlen 1 oder 2 eingebe erhalte ich ein Ergebnis. Bei anderen Zahlen erhalte ich eine Endlosschleife.

Hat jemand eine Idee, wo mein Fehler liegt?

LG Irina

4.941 Beiträge seit 2008
vor 2 Jahren

Hat jemand eine Idee, wo mein Fehler liegt?

Ja, in der Zeile


zahl = zahl * (3 + 1);

I
Irina Themenstarter:in
20 Beiträge seit 2021
vor 2 Jahren

Hallo,

vielen Dank, es funktioniert jetzt einwandfrei.

LG Irina