Primzahlen berechnen
-
wozu brauchst du float beim primlzahlenzerlegen?
versuchs mal mit %(mod)
-
|< schrieb:
...er keine fehler findet, außer dass einal (aber bewusst) von float in int gewechselt wird...
Was verstehst du unter Debugger? 
-
|< schrieb:
...er keine fehler findet, außer dass einal (aber bewusst) von float in int gewechselt wird...Der Debugger findet auch keine Fehler

Du sollst mit Hilfe des Debuggers den Fehler aufsuchen.
-
Warum nutzt du den windows Header?
Und wenn du von int zu float konvertierst, dann mach das doch richtig mitfloat ergcut = static_cast<float>(erg);Und wofür brauchst du überhaupt Float?
_matze hat Recht, wofür for-Schleifen, wenn du mit denen genau das selbst machst, wozu man while-Schleifen nimmt.
Allgemein versteh ich nicht ganz manchmal, was du da machst.
Warum speicherst du z.B. die angeblichen Primzahlen ab, wenn du nie wieder Zugriff auf sie brauchst.
Du machst es dir im allgemeinen also ziemlich schwer und wurschtelst dir was zusammen, vielleicht solltest du dir ein paar Anfangstutorials zu Schleifen anschauen, ebenso eine Primberechnung.#include<iostream> using namespace std; int main() { bool abfrage = true; int maximale_primzahl = 100; bool istprimzahl; cout<<"Es werden alle Primzahlen bis zum jeweils\nnaechsten 100er Bereich berechnet!\n"; cout<<"Danach werden sie nach einer Bestaetigung\ngefragt, ob weiter gerechnet werden soll!\n"; cin.get(); while(abfrage) { for(int i = 1; i < maximale_primzahl; i++) { istprimzahl = true; for(int j = 2; istprimzahl && j < i; j++) { if(i % j == 0) istprimzahl = false; } if(istprimzahl) cout << i << " ist eine Primzahl" << endl; } maximale_primzahl += 100; cout<<"\n\n\nMoechten sie die naechsten\n100 Zahlen auf Primzahlen durchsuchen?\n"; cout<<"Geben sie 1 fuer 'Ja' ein,\ngeben sie 0 fuer 'Nein' ein!\n"; cin >> abfrage; } system("pause > nul"); }
-
hast recht,
mit while-schleifen eindeutig leichter...
nur den abschnitt verstehe ich nicht, (die rechnung)
istprimzahl = true; for(int j = 2; istprimzahl && j < i; j++) { if(i % j == 0) istprimzahl = false; } if(istprimzahl) { cout << i << " ist eine Primzahl" << endl; } } maximale_primzahl += 100;
-
Die Schleife macht folgendes:
Sie dividiert i durch alle Zahlen (j) von 2 bis i und schaut, ob einmal kein Rest herauskommt(Modulo). Ist das der Fall, ist es keine Primzahl, sonst schon.
Danach wird die Primzahl(wenn es eine ist) auf der Konsole ausgegeben.
-
ah, jetzt habe ich es verstanden

:D:Dhmm,
auch wenn das jetzt nicht hier rein gehört,ich finde keinen (funktionierenden/ausführbaren) c++ compiler für debian 5.0.3 (oder "lenny"), bzw. weiß nicht wie ich die datei ausführen soll.
habe schon alle programme versucht zu starten, aber keine chance...??
weiß da jemand was?
-
thx aber schon an dich, wxSkip, habe das ja wie gesagt verstanden!!!
-
hmmm... gibts keinen vorkompilierten gcc für Debian?
-
nein, habe bis jezz noch keinen gefunden

habe mir auch ein offizielles package für lenny runtergeladen, aber ich entpacke alle ordner und es lässt sich keine datei ausfürhren, obwohl drei als "executable" angezeigt werden!?!
mal schauen...

:| :| :|
-
Was heißt "lässt sich nicht ausführen"? Normalerweise einfach
g++ DeinQuellcode.exeund dann noch glaub ich
-o Dateinamefür die EXE-Datei, die rauskommen soll, wenn du das nicht eingibst, kommt einfach eine Datei a.exe raus
-
wxSkip schrieb:
Was heißt "lässt sich nicht ausführen"?
Normalerweise einfach
g++ DeinQuellcode.exeund dann noch glaub ich
-o Dateinamefür die EXE-Datei, die
rauskommen soll, wenn du das nicht eingibst, kommt einfach eine Datei a.exe
raus
ich (versuche) zusammen zui fassen

- ich lade package von debian runter
- den g++ compiler
- ich extrahiere ihn
- ich schreibe mit kdn (oder so ;)) den sourcecode
- ich speichere ihn (z.B.: unter "/home/benutzer/desktop/meinsourcecode.cpp"ab hier THEORIE:
- brauche ich dann nur noch das terminal zu öffnen
und dann "g++ /home/benutzer/desktop/meinsourcecode.cpp" eingeben??
oder muss ich "g++ /home/ben../meinsourcecode.exe" eingeben?- und dann das "-o Dateiname" weiß ich ja

habe ich das so richtig verstanden?
wenn nein, korrigier mich bitte :D:D
-
bei meiner lösung fallen allerdings alle zahlen durchj, keine werden als primzahl benannt...
#include<iostream> using namespace std; int main() { bool abfrage = true; int maximale_primzahl = 100; bool ist_primzahl; cout<<"Primzahlberechnung!\n\nGeben sie Enter zum Start ein!\n\n\n"; cin.get(); while(abfrage) { for(int moegliche_prim = 1; moegliche_prim < maximale_primzahl ; moegliche_prim++) { ist_primzahl = true; for( int divisor = 2 ; ist_primzahl = true && divisor < moegliche_prim ; divisor++) { //hier eine Restdivision if(moegliche_prim % divisor == 0) { ist_primzahl = false; } } if(ist_primzahl) { cout<<""<<moegliche_prim<<" ist eine Primzahl!\n"; } } maximale_primzahl += 100; cout<<"\n\n\nMoechten sie die naechsten 100 Zahlen auf Primzahlen durchsuchen?\n"; cout<<"Geben sie 1 fuer 'JA' ein,\ngeben sie 0 fuer 'NEIN' ein!\n"; cin>>abfrage; } cin.get(); }und noch was, bei dem code von freaky<3 (oder so :P:D, sry)
funktioniert zwar alles, aber es werden die zahlen so berechnet:
1-100
1-200
1-300
...
usw...das muss aber nicht uuuunbedingt verbessert werden

ich frage mich nur, warum mein code nicht funzt...
bin selber noch am suchen -.-'
-
okay, edit:
mein code hat nicht fubnktioniert, weil ich in line 19 ein
=true eingebaut hatte!!!
danke an alle, ich poste meinen fertigen code jetzt aber nicht hier im forum, hier der link:
vorallem danke an:
frekay<3
und
wxSkip
-
closed
-->eröffne neuen beitrag des kompilierens wegen

thx an euch nochmal