Primzahl



  • Hallo zusammen , ich brauch mal wieder eure Hilfe.
    Ich bekomme kein Ergebnis angezeigt, was habe ich verkehrt gemacht?
    Schleife oder bool? und schon mal Danke

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
        int i;
        i=2;
        int testZahl;
    
        cout << "Bitte gib die Prime test Zahl ein!" << endl;
        cin  >> testZahl;
    
        bool ist_eine_Primzahl = true;
    
        while(1 < testZahl)
        {
            if (testZahl % i== 0)
            {
                ist_eine_Primzahl = false;
            }
            i++;
        }
    
        if (testZahl)
        {
            cout<< endl;
            cout<< "Es ist eine Prim Zahl"<< endl;
        }
        else
            {
            cout<< endl;
            cout<< "Es ist keine Prim Zahl"<< endl;
            }
    
    return 0;
    }
    


  • die while-Schleife ist eine Endlosschleife für testZahl > 1



  • juhu123 schrieb:

    while(1 < testZahl) // Eins ist vermutlich immer kleiner als deine Testzahl -> Endlosschleife
        {
            if (testZahl % i== 0)
            {
                ist_eine_Primzahl = false;
            }
            i++;
        }
    


  • Zeile 19 und Zeile 28, jeweils die Bedingungen sind etwas, naja, ungenau...



  • 5 Sek schneller 😃



  • Dein Lörres is bestimmt en Meter lang^^

    Immer dran denken, im Internet diskutieren und bei den Paralympics teilnehmen ist dasselbe. Selbst wennde gewinnst, biste immer noch behindert...

    [/Sarcasm]



  • int p = 13 ;
    for ( int i = 2 ;  i <= p/2 ;  ++i )
        if ( p % i == 0 )
        {
           // p nicht prim
           break ;
        }
    
    // p prim
    


  • Erklär mal warum, du bist p/2 gehst und nicht bis p oder p/3 oder p/4 oder p/n


  • Mod

    Skym0sh0 schrieb:

    Erklär mal warum, du bist p/2 gehst und nicht bis p oder p/3 oder p/4 oder p/n

    Joa, die Standardmethode ist bis zur Wurzel gehen. Und dann nicht Quadratzahlen vergessen.



  • Vielleicht weil zwischen p/3 und p/2 noch ein Teiler von p liegen kann (bin ich mir nicht sicher), zwischen p/2 und p aber nicht. Ist ja auch wurscht, das ist so oder so keine effektive Methode, um eine Zahl auf Primeigenschaft zu testen.


Log in to reply