Laden...

Ulam'sche Vermutung

Letzter Beitrag vor 2 Jahren 3 Posts 495 Views
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

Hat jemand eine Idee, wo mein Fehler liegt?

Ja, in der Zeile


zahl = zahl * (3 + 1);

Hallo,

vielen Dank, es funktioniert jetzt einwandfrei.

LG Irina