Primzahlen berechnen



  • |< 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 mit

    float 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:D

    hmm,
    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.exe
    

    und dann noch glaub ich

    -o Dateiname
    

    fü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.exe
    

    und dann noch glaub ich

    -o Dateiname
    

    fü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:

    http://pastebin.com/f709629a6

    vorallem danke an:
    frekay<3
    und
    wxSkip



  • closed

    -->eröffne neuen beitrag des kompilierens wegen 😃 😉

    thx an euch nochmal


Anmelden zum Antworten