Primzahlausgabe
-
-
hab ich mir grad angeschaut.
ich hab einen ganz anderen code, und kann mit den sachen da nicht viel anfangen...
ich würde gerne wissen, wie ich halt meinen code erweitern muss damit es klappt und wollte nicht direkt alles löschen...
-
Überleg dir mal den Ablauf in der Schleife, wenn du den Code in einer Funktion hättest, würde die Schleife so aussehen (gekürzt).
while(i<a-1) { i++; c = a%i; return c!=0; }
-
volkard schrieb:
wenn wir schon andere threads rauskramen dann auch bitte aus dem c subforum
http://www.c-plusplus.net/forum/p1896499#1896499natürlich sollten die in den folgenden posts beschriebenen fehler und etwaige unentdeckte noch ausgebessert werden
-
Prof. Anfänger schrieb:
Bisher ist mir nur der Teil gelungen, der überprüft, ob es sich bei der eingegebenen Zahl um eine Primzahl handelt:
Prüf deinen Code noch einmal. Derzeit ist deine Definition von Primzahl nämlich "nicht durch 3 teilbar". Wenn du das erst einmal in Ordnung gebracht hast, dann dürftest du dabei selber auf die Lösung für deine Frage stoßen.
-
doch ist sie. bei jeder zahl, die nur durch 1 und durch sich selbst teilbar ist gibt sie "Primzahl" aus.
@falcon
der compiler mag dne ausdruck "return" nicht...oO
-
Prof. Anfänger schrieb:
doch ist sie. bei jeder zahl, die nur durch 1 und durch sich selbst teilbar ist gibt sie "Primzahl" aus.
Das glaub ich Dir nicht. Das mag vieleicht für den Code gelten, den Du Deinem Compiler vorgesetzt hast. Der hier gepostete Code macht dies offensichtlich nicht.
mfg Martin
-
Ich hatte geschrieben, so sähe es aus, wenn dieser Code in einer Funktion ausgelagert wäre.
Was Sepp mit dem Überprüfen auf drei meinte:// Pseudocode i=2 while(1) // die Bedingung ist egal ++i -> jetzt 3 if(a%3 !=0) Primzahl sonst nicht hier wird durch das break die Schleife verlassen
Du hast doch den Link mit einigen Lösungen. Du überprüfst in jedem Schleifendurchgang
if((a%i)==0) -> keine Primzahl
, ansonsten wird solange weitergemacht, bis i>sqrt(a) ist. Erst dann wird die Suche abgebrochen und man ist sicher, dass a eine Primzahl ist.
-
Hier mal ein Beispiel:
cBool isPrime( unsigned long n ) { unsigned long maxNum, i; if( n < 2 ) return false; if( n == 2 ) return true; maxNum = sqrt( n ) +1; for( i=2; i<=maxNum; i++ ) if( n%i == 0 ) return false; return true; }
cBool ist ein enum mit false und true.
mfg Martin
-
Prof. Anfänger schrieb:
Hallo,
ich möchte ein Programm schreiben, dass alle Primzahlen bis zu einer eingegebenen Grenze ausgibt.
Wie einen Primzahlalgorithms definieren kann
-
Teste nur ungerade Zahlen
-
Speichere alle schon bestimmten Primzahlen
-
Die zuprüfende Zahl wird solange durch Primzahlen geteilt, bis
-
ein Teiler gefunden ist
-
die nächste Testprimzahl größer als das Quadrat der zu testenden Zahl ist
Damit sollte sich relativ einfach ein Primzahlprogramm schreiben lassen.
-