Ich möchte bei C++ eine Ausgabe nur von Primzahlen haben, ich weiß aber nicht wie ich das machen soll! Kann mir bitte jemand helfen??
Antworten (4)
-
0Antwort von
ichweisnixichweisnix
Eine einfache Variante ist das Sieb des Eratostheness.
/// Man erzeugt ein Array:
bool * isprime = new bool[C]
/// Dann setzt man alle zahlen auf true.
for(int i=0;i
-
0Antwort von
zeta24 Es gibt mehrer Möglichekeiten, eine Primzahl zu finden. In welcher Grössenordnung sollen die Primzahlen denn liegen? Oder möchtest Du nur die ersten paar Millionen Primzahlen wissen? Wenn es sich um eine Hausaufgabe aus dem Schulunterricht handelt, schau Dir mal das Sieb des Erathostenes an. Wenn Du weist, wie man modulo rechnet, schau Dir den Rabin-Miller Primzahltest an. Weitere Primzahltests findest Du in der Wikipedia. Die ersten 37 Millarden Primzahlen bis 1000000000000 findest Du auf meiner Webseite.
-
0Antwort von
Hamster0815Hamster0815
Wieso gerade C++? Wenn du C++ kannst dann dürfte es kein Problem sein das zu realisieren! bei intresse hätte ich eine lösung in VB 2005
-
-
0Antwort von
benutzer27benutzer27
Da es keine Berechnungsformel für Primzahlen gibt (wurde noch nicht gefunden), bleibt dir nichts anderes übrig als es durch probieren herauszufinden. Die ersten 3 kannst du ja fest setzen (1, 2, 3 kennt jeder), danach musst du eine Schleife für jede Zahl durchlaufen, wobei du prüfst ob du eine Zahl zwischen 2 und int((n+1)/2) findest, die n ohne Rest teilt. Falls ja, dann ist es keine Primzahl, falls nein, dann hast du eine gefunden und gibst sie aus. Das ganze machst du solange, bis jemand eine Taste drückt, dass Programm abbricht oder ein vorher festgelegter Maximalwert erreicht wurde.
Beispiel für die 7: prüfe von 2 bis int((7+1)/2)=4 ob 7 ohne Rest teilbar: 7/2 -> nein, 7/3 -> nein, 7/4 -> nein, damit ist 7 eine Primzahl
Beispiel für die 12: prüfe von 2 bis int((12+1)/2)=6 ob 12 ohne Rest teilbar: 12/2 -> ja, damit keine Primzahl
Die Umsetzung in C++ sollte jetzt ein leichtes sein.
Mist, macht einfach meinen Text kaput. \