mamarulez
Mitglied
Hallo,
ich will ein Programm schreiben, was alle Primzahlen von X bis Y schreibt.
So sieht es bis jetzt aus:
Ich verlange nicht von euch, dass Ihr meine Hausaufgaben macht - aber vielleicht mir einen Denkanstoss geben, wie es weitergehen kann.
Im Moment komme ich einfach nicht weiter.
Nochmal zur Kommentierung des obigen Quelltextes (obwohl die ja eigentlich gut sein müßte): Also - es geht eigentlich nur um die Funktion "void AufPrimzahlTesten ( int Startwert, int Endwert )". So, da wird ersteinmal bei jeder Zahl zwischen "Startwert" und "Endwert" geguckt ob die gerade oder ungerade ist. Da Primzahlen immer ungerade sind wird auch nur mit ungeraden weitergerechnet. Der nächste Schritt ist dann zu schauen, ob die Zahl ("AktuelleZahl") einen positiven, natürlichen Teiler hat ausser der "1" und sich selbst. Und genau da komme ich nicht weiter!
Wenn Ihr Fragen zu dem Code da oben habt, dann schreibt mir bitte!
Danke schonmal im Vorraus!
ich will ein Programm schreiben, was alle Primzahlen von X bis Y schreibt.
So sieht es bis jetzt aus:
Code:
// +++++++++++++++++++++++++++++++++++++++++++ //
// + PRIMZAHLEN + //
// + + //
// + Autor: Jan Simon DATUM: 22.12.2003 + //
// +++++++++++++++++++++++++++++++++++++++++++ //
// HEADER
#include <iostream.h>
#include <math.h>
// FUNKTIONEN
bool IstZahlGerade ( int Zahl )
{
if ( Zahl % 2 == 0 )
return true;
else
return false;
}
void ZahlAuflisten ( int Zahl )
{
cout <<Zahl<<"\n";
}
void AufPrimzahlTesten ( int Startwert, int Endwert )
{
int AktuelleZahl;
//Von "Startwert" bis "Endwert" checken ob die "AktuelleZahl" eine Primzahl ist oder nicht!
for ( AktuelleZahl = Startwert; AktuelleZahl < Endwert; AktuelleZahl++ )
{
// Nur wenn "AktuelleZahl" ungerade ist, dann wird wird mit ihr weitergearbeitet!
if ( IstZahlGerade ( AktuelleZahl ) == false )
{
int ErsterAktuellerTeiler;
int ZweiterAktuellerTeiler;
// Jetzt müssen wir für jede "AktuelleZahl" alle möglichen Teiler ausfindig machen!
// Also immer von 2 bis zu "AktuelleZahl" jede Zahl durchgehen und schauen ob sie ein Teiler ist!
for ( ErsterAktuellerTeiler = 2; ErsterAktuellerTeiler < AktuelleZahl; ErsterAktuellerTeiler++ )
{
// So - jetzt nehmen wir einfach den "ZweiterAktuellerTeiler" dazu und multiplizieren so jede
// natürliche, positive Zahl von 2 bis "AktuelleZahl" mit jeder natürlichen, positiven Zahl
// von 2 bis "AktuelleZahl"
for ( ZweiterAktuellerTeiler = 2; ZweiterAktuellerTeiler < AktuelleZahl; ZweiterAktuellerTeiler++ )
{
// Wenn "ErsterAktuellerTeiler" mal "ZweiterAktuellerTeiler" zusammen nicht "AktuelleZahl"
// ergibt, dann wird
if ( ErsterAktuellerTeiler * ZweiterAktuellerTeiler != AktuelleZahl )
}
}
}
}
// HAUPTSCHLEIFE
void main ( void )
{
AufPrimzahlTesten ( 0, 100 );
}
Ich verlange nicht von euch, dass Ihr meine Hausaufgaben macht - aber vielleicht mir einen Denkanstoss geben, wie es weitergehen kann.
Im Moment komme ich einfach nicht weiter.
Nochmal zur Kommentierung des obigen Quelltextes (obwohl die ja eigentlich gut sein müßte): Also - es geht eigentlich nur um die Funktion "void AufPrimzahlTesten ( int Startwert, int Endwert )". So, da wird ersteinmal bei jeder Zahl zwischen "Startwert" und "Endwert" geguckt ob die gerade oder ungerade ist. Da Primzahlen immer ungerade sind wird auch nur mit ungeraden weitergerechnet. Der nächste Schritt ist dann zu schauen, ob die Zahl ("AktuelleZahl") einen positiven, natürlichen Teiler hat ausser der "1" und sich selbst. Und genau da komme ich nicht weiter!
Wenn Ihr Fragen zu dem Code da oben habt, dann schreibt mir bitte!
Danke schonmal im Vorraus!