Programmiersprache für Zahlentheorie?

11 Antworten

Wie Karajan9 bereits richtig andeutete: Du hast die vielen Randbedingungen vergessen:

§1: wenn Du 100stellige Zahlen mit dem primitivsten Algorithmus (Modulo ungerade Zahlen bis zur Wurzel n) berechnen willst, kannst Du alle Interpretersprachen vergessen, da sie stunden- oder sogar tagelang rechnen würden. Hier würden nur c++ oder andere echte Compiler unter 1 Stunde bleiben. (64 Bit; Multitasking; AVX-Befehle, FFT-Multiplikation,...)

also Angabe der  Obergrenze fehlt

§2: Wenn der Algorithmus gut ist (Elliptic Curve Method; Carmichael-Faktorisierer), kann man selbst 200stellige Zahlen mit mittelschnellen Sprachen (php, Java, c#) berechnen. In JAVA gibt's bereits fertigen Code der auch noch unabhängig vom Betriebssystem arbeitet! 

Es fehlt gewünschte Geschwindigkeit oder maximale Zeitdauer (schwankt extrem stark: 2er Potenzen sehr leicht & schnell; RSA-Zahlen extrem langsam & kompliziert)

§3: warum teure und von zig Faktoren abhängige Fremdsoftware wie Matlab verwenden? Wenn Du mal den Rechner wechselst, muss immer die Fremdsoftware zuerst installiert werden... Außerdem ändert sich mit der Version oft auch einiges. Würde ich abraten...

Außerdem gibt es http://de.mathworks.com/products/matlab-coder/

der c- & c++ Code erzeugt -> warum nicht gleich c++ ohne Umwege?

§4: ist Zugriff auf Datenbank erlaubt? Es gibt im Internet Datenbanken für über 1000 stellige Zahlen, die bereits faktorisiert sind. Andererseits gibt es 300stellige Zahlen, die bis heute immer noch NICHT fakorisiert sind, also unbekannt, ob Primzahl...

Auch wenn sie gute Teste für Primzahlen haben.

0

Das Standardverfahren (das vermutlich von dir erwartet wird) ist die Probedivision bis maximal zur Wurzel der zu zerlegenden Zahl. Wenn du vorher einen Faktor findest, teilst du durch diesen und machst mit dem Ergebnis weiter.

Das kann man in jeder Programmiersprache leicht programmieren.

Python hat den Vorteil, dass du mit den Zwischenergebnissen in der Shell interaktiv rechnen kannst, während die anderen hier genannten Sprachen (Java, C# usw.)  zwar deutlich schneller sind, aber eben nur eine Eingabe und eine Ausgabe haben (es sei denn du baust dir selbst eine aufwendige Benutzerobefläche)

Geschwindigkeit ist dabei aber auch relativ unwichtig. Ein long int (2^63) bekommst du mit dem obigen Verfahren weder mit Python noch mit Java schnell zerlegt und ob du auf ein Ergebnis 2 oder 20 Sekunden wartest, ist letztlich auch egal. Du willst ja vermutlich mit handhabbaren Beispielen arbeiten. 10 stellige Zahlen (normales int bis 2^31) gehen in beiden Sprachen fix, da du ja nur ca. 50000 Probedivisionen machen musst. Die (Nicht-)Zerlegung von 10^15+37 dauert bei mir in Python etwa 5 Sekunden.

Schön an Python ist auch, dass es ziemlich wenig Overhead hat.

print "Hallo" 

ist nunmal kürzer als

class Hallo {
public static void main(String[] args) {
System.out.println("Hallo");
}
}

Es kommt ein bisschen darauf an, was dein endgültiges Ziel ist.

Python zum Beispiel ist leicht zu erlernen und das müsste damit auch ganz gut machbar sein. Im Vergleich zu anderen Sprachen ist Python aber recht langsam. Sprich wenn du das Programm dann nicht nur ein Mal kurz, sondern ausgiebig benutzen möchtest, ist es nicht das richtige.

Falls Geschwindigkeit eine wichtige Rolle spielt, würde ich auf eine kompilierte Sprache wie C/C++ zurückgreifen. Die sind dann aber bedeutend schwerer zu erlernen.

Programmiersprache JavaScript lernen und in Unity einbinden?

Hallo zusammen. Ich will gerne Spiele programmieren und da hab ich mir die Unity3D Engine rausgesucht. Das Problem: Ich habe keine Ahnung vom programmieren und will es erlernen. Da es nicht viele deutsche Tutorials für Unity gibt, will ich einfach die Programmiersprache erlernen also ohne Unity. Jetzt kommt meine Frage: Wie kann man z.B. eine für Website gelernte Sprache in Unity verwenden?

PS: Damit meine ich nicht HTML oder so. Sondern z.B. JavaScript.

...zur Frage

Wie kann mein Sohn (12 Jahre) das Programmieren erlernen?

Hallo, mein Sohn (12 Jahre) möchte das Programmieren erlernen. Er hat allerdings damit noch keine Erfahrung. Wie kann man das lernen und mit welcher Programmiersprache?

...zur Frage

Welche Programmiersprache lernen (was ist die mächtigste)?

Hallo,
ich habe gerade null Erfahrung mit Programmieren und bin 15 Jahre alt (ich wollte in meinem Alter die Programmiersprache lernen, also am besten eine für Anfänger und leicht zu verstehen) aber es soll eine mächtige Sprache sein, also eine mit der man auch Seiten wie Youtube und Facebook programmieren kann und am besten sollte man mit der Sprache auch Apps auf dem Smartphone programmieren können aber auch Programme und Seiten auf Computer. Welche Programmiersprache empfehlt ihr mir??

...zur Frage

Welche Programmiersprache würdet ihr mir empfehlen zu lernen?

Ich würde gerne anfangen programmieren zu lernen, da ich den Beruf "fachinformatiker systemintegration" oder den Beruf "fachinformatiker anwendungsentwicklung" anstrebe. Ich weiß aber nicht, welche Programmiersprache die beste ist oder welche bei dem Beruf "fachinformatiker anwendungsentwicklung" am meisten Genutzt wird. Bitte sagt auch dabei, wo man sie am besten lernen kann und wofür die Programmiersprache genutzt werden kann.

...zur Frage

enthält das Mathematikstudium das Erlernen einer Programmiersprache?

habe nun schon von mehreren studenten gehört, sie würden im studium eine programmiersprache lernen, welche sehr "mathematisch" aufgabeaut sei.

frage: können das andere mathestudenten bestätigen?, welche Sprache soll das sein?

...zur Frage

Was möchtest Du wissen?