Zum Inhalt springen

Suche Hilfe bei einer Primzahlberechnung in C++


Phade

Empfohlene Beiträge

Ok, habe das jetzt mal so geschrieben:

#include <iostream> // Headerdatei


using namespace std;


int main ()

{

    int eingabe; // Deklaration der Ein- und Ausgabe

    int zaehler; // Deklaration des Zählers


    cout << "Bitte geben Sie eine beliebige Zahl ein: "; cin >> eingabe; // Einlesen der Eingabe mit cin


    for(int zaehler=2; zaehler<=eingabe-1; zaehler++)

    {

       	if(eingabe % zaehler == 0) // Wenn das zutrifft, dann tue das

	{

	    cout << "\n\nDie Zahl ist eine Primzahl!" << endl;  // Anweisung

	}


	else // Wenn nicht, dann tue das

	{

	    cout << "\n\nDie Zahl ist KEINE Primzahl!" << endl;  // Anweisung

	}

    }

    return 0;

}

Komisch ist nur, wenn ich nun das Programm laufen lasse, gibt es mir beide Ausgaben wieder. Also die if und die else Ausgabe....

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 62
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Wenn du das wirklich komisch findest, hast du nicht verstanden, was du da selbst geschrieben hast. Schau dir den Algorithmus nochmal an. Simuliere den Ablauf deines Programms Schritt für Schritt mit Papier und Bleistift. Nachdenken, nicht Rumprobieren.

Wenn du einen Zähler gefunden hast, durch den eingabe teilbar ist (if), ist eingabe keine Primzahl.

Aber nur weil du einen Zähler gefunden hast, durch den eingabe nicht teilbar ist (else), ist eingabe noch lange keine Primzahl. 25 ist nicht durch 3 teilbar. Ist 25 deswegen eine Primzahl?

Dass eingabe eine Primzahl ist, kannst du erst feststellen, wenn die Schleife durchgelaufen ist. Die Ausgabe "Die Zahl ist eine Primzahl" kann also nicht in der Schleife stehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich finde das echt super, dass du mich so darauf Trainirst, selber darüber nachzudenken, wie, warum, weshalb....ich das so schreiben muss und nicht anders !!!! :uli

Doch zu meiner SChande muss ich gestehen, das ich aus dem letzten Beitrag nicht so richtig schlau werde...kannst du es irgendwie genauer andeuten????

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich finde das echt super, dass du mich so darauf Trainirst, selber darüber nachzudenken, wie, warum, weshalb....ich das so schreiben muss und nicht anders !!!! :uli
Das ist reiner Eigennutz. Wenn du selber denken kannst, brauchst du später weniger Hilfe, und kannst dafür anderen helfen -> weniger Arbeit für mich. ;)

Doch zu meiner SChande muss ich gestehen, das ich aus dem letzten Beitrag nicht so richtig schlau werde...kannst du es irgendwie genauer andeuten????
Das ist überhaupt keine Schande.

Ob eingabe eine Primzahl ist, hängt davon ab, ob wir einen Zähler finden, durch den eingabe teilbar ist. Finden wir keinen, ist es eine Primzahl. Finden wir einen (oder mehrere), ist es keine. Soweit klar?

Wir könnten uns in einer weiteren Variablen merken, ob wir einen Teiler gefunden haben. Wir setzen die Variable zu Beginn auf false, und wenn wir einen Teiler finden, setzen wir sie auf true. Ansonsten machen wir gar nichts.

Setz das bitte mal um. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ob eingabe eine Primzahl ist, hängt davon ab, ob wir einen Zähler finden, durch den eingabe teilbar ist. Finden wir keinen, ist es eine Primzahl. Finden wir einen (oder mehrere), ist es keine. Soweit klar?

Ist klar!

Wir könnten uns in einer weiteren Variablen merken, ob wir einen Teiler gefunden haben. Wir setzen die Variable zu Beginn auf false, und wenn wir einen Teiler finden, setzen wir sie auf true. Ansonsten machen wir gar nichts.

das kann ich nicht nachvollziehen..... :confused:

Ich würde zumindest diese Variable in die erste if Bedingung schreiben?.?.?.?. und zwar so:

int var(0);

aber weiter weiß ich noch nicht.....

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde zumindest diese Variable in die erste if Bedingung schreiben?.?.?.?.

Genau. Ich geb mal "Starthilfe". Ich habe meine Textbeschreibung von eben in Code umgesetzt. Versuch mal, das nachzuvollziehen.


#include <iostream>
using namespace std;

int main ()
{
int eingabe;
cout << "Bitte geben Sie eine beliebige Zahl ein: "; cin >> eingabe;

// Wir setzen die Variable zu Beginn auf false
bool teilergefunden = false;

for(int zaehler=2; zaehler<=eingabe-1; zaehler++)
{
// und wenn wir einen Teiler finden,
if(eingabe % zaehler == 0)
{
// setzen wir sie auf true.
teilergefunden = true;
}
else
{
// Ansonsten machen wir gar nichts.
}
}

// Jetzt müssen wir nur noch die Variable auswerten...

return 0;
}[/CODE]

Beim letzten Kommentar bist du jetzt wieder am Zug. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe das Programm jetzt mal so geschrieben.... :D


#include <iostream>

using namespace std;


int main ()

{

    int eingabe;

    cout << "Bitte geben Sie eine beliebige Zahl ein: "; cin >> eingabe;


    // Wir setzen die Variable zu Beginn auf false

    bool teilergefunden = false;


    for(int zaehler=2; zaehler<=eingabe-1; zaehler++)

    {

        // und wenn wir einen Teiler finden,

       	if(eingabe % zaehler == 0)

	{

	    // setzen wir sie auf true.

            teilergefunden = true;

	    printf("\nGefundener Teiler: %i \n", zaehler); // Hier wollte ich mir die Teiler noch ausgeben lassen...leider nur mit printf...cout habe ich nicht gefunden.....

	}

	else

	{

            // Ansonsten machen wir gar nichts.

	}

    }


    // Jetzt müssen wir nur noch die Variable auswerten...

    if(teilergefunden == false)

    {

	cout << "\nDie eingegebene Zahl, ist eine Primzahl!\n" << endl;

    }

    else

    {

	cout << "\nDie eingegebene Zahl, ist keine Primzahl!\n" << endl;

    }

    return 0;

}

Vielleicht kannst du mir ja noch den cout-Befehl für die Teilerausgabe sagen, die die ich versucht habe, hat nicht gefunzt :confused: . Deshalb habe ich printf genommen....... :(

Ich bedanke mich trotzdem bei dir, für die Geduld und Hilfe!!

:uli :uli :uli

Bis dännchenmal und nochmal

THANX.!.!.!.!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...