Was ist an diesen C++ Code falsch?

... komplette Frage anzeigen

2 Antworten

Ohne jetzt kritisieren zu wollen, nur eine Anmerkung: Der Algorithmus ist äußerst primitiv (soll heißen: miserables Laufzeitverhalten). Aber an der Frage erkenne ich, dass du eher im Anfängerbereich einzuordnen bist und da ist das ein durchaus gültiger Ansatz (also lass dich davon nicht verunsichern).

Das Problem an deinen Ansatz ist, dass du sobald eine Zahl nicht teilbar ist entscheidest, dass es wohl eine Primzahl sein muss.

Beispiel 4:
Direkt im ersten Durchgang wird getesten ob 4 durch 3 teilbar ist und dann abgebrochen.
4%3 == 1 ... dein Programm sagt das ist eine Primzahl

Korrekt wäre aber zu prüfen, dass der Wert weder durch 3 noch 2 zu teilen ist.

Antwort bewerten Vielen Dank für Deine Bewertung

int zahl;
int zahl1 = zahl - 1;
### zahl hat doch garkeinen expliziten Wert. Kannst du es nicht auf 0 setzen?

### zahl1 ist nun evtl. -1


cin >> zahl;

### Ich gebe 1 ein. 1 Modulo -1    Darf der zweite Parameter überhaupt negativ sein? 1/-1 = 1 Rest 0

 
for(int i = zahl % zahl1; zahl1--;){

    if(i == 0){

        cout << "Diese Zahl ist keine Primzahl";
        break;
    }
    else{
        cout << "Diese Zahl ist eine Primzahl";
        break;
    }

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von asdasaasdd
16.06.2016, 19:15

Kannst du mir schreiben wie es richtig aussieht?

0