n! mit C#

Dieses Thema n! mit C# im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Der_Wanderer, 18. März 2005.

Thema: n! mit C# Ich soll ein Programm erstellen, das die Fakultät einer beliebigen natürlichen Zahl errechnet. Ansich kein Problem...

  1. Ich soll ein Programm erstellen, das die Fakultät einer beliebigen natürlichen Zahl errechnet. Ansich kein Problem wenn da nicht riesige Zahlen als Ergebnis rauskommen würden.

    Eine int-Variable hat bei C# 32-Bit und somit passt eine Zahl mit etwas über 2,1 Milliarden rein. Diese Zahl ist bei n! schnell erreicht. Die 12 past ncoh rein aber bei der 13 ist der Wertebereich schon überschritten.

    Die Aufgabenstellung sieht vor, daß man ein Array mit 2000 int-Elementen verwenden soll. Aber nach meinen bisherigen Versuchen ist auch dort schon bei 16 Feierabend.

    Wie könnte die Lösung bei so einem Problem aussehen? Muß man mehrere Arrays verwenden? Aber wie teile ich dann das Ergebnis in mehrere Arrays? Ich brauch dringend ein Anstoß in die richtige Richtung.

    Im Voraus schonmal Danke
     
  2. IMO ist die Länge einer int-Variablen abhängig vom Betriebssystem. Ich hätte momentan nur die Lösung parat, dass man aus den int's long's macht...

    Greetz
    M.
     
  3. mit der int-Länge hatte ich in der Hilfe von der Entwicklungsumgebung nachgeschlagen.

    mit long hatte ich es auch versucht, dann gehts immerhin bis 15, aber 16 ist es dann auch schon vorbei.

    Die ganze Aufgabe ist darauf ausgelegt, daß man mit dem Platz der Variablen oder Arrays nicht zurande kommt. Man soll es halt irgendwie schaffen das Ergebnis auf mehrere zu verteilen. Aber ich hab keine Vorstellung wie.
     
  4. Hi

    In C# weiß ich nicht ob das geht, ein Gedanke wäre jetzt, dass man das erste element im int array zum rechnen nutzt und bei jeder neuen dezimalstelle die zahl nach rechts shiftet. ich weiß allerdings nicht ob das dann auch wirklich ins nächste array Feld wandert.

    Ansonsten kann man sich in C# eventuell eigene Datentypen definieren und das darüber lösen?

    Gruß, Michael