Primzahlenberechnung



  • Hallo.. ich wollte ein programm schreiben, was mir primzahlen berechnet.. ich habe mir das so überlegt:

    n= primzahl die ich prüfen will
    i==0
    solange i<n mache {
    n/i .. wenn das ergebnis..

    .. eine ganze zahl ist , dann schreibe, dass es keine primzahl ist und verlasse die schleife
    .. eine fließkommazahl ist , dann erhöhe i um 1

    }

    mein prob ist, wie kann ich C sagen, ob es sich um eine ganze / natürliche zahl handelt? und wie verlasse ich eine while schleife .. mit break geht das ja nur in switch soweit ich weiss ^^



  • 1.) Falsches Forum, hier geht es um C#
    2.) Ganze Zahlen haben keine Nachkommastellen
    3.) while-Schleifen KANN man mit break verlassen (alle Schleifen kann man mit break verlassen), allerdings reicht es wenn man die Bedingung der Schleife geschickt wählt



  • Icke schrieb:

    mein prob ist, wie kann ich C sagen, ob es sich um eine ganze / natürliche zahl handelt?

    Schau Dir mal den Modulo-operator % an.



  • sry für false chanel ^^.. ja mit dem modulo dachte ich des auch schon.. aba wie mache ich das?

    z.B.

    9/3 = 3 3mod3=0 also keine primzahl
    9/2 = 4,5 4,5 mod 4,5 =0 , keine primzahl, obwohl es mit /2 gar net bewiesen wurde ..oda ich weiss net wie ich das mit mod mache xD



  • Gibt's bei Euch kein Internet ?



  • Hi,

    ich hab da mal was vor langer Zeit geschrieben.
    Ich weiß noch nicht mal ob das was von der Schule ist, aber egal. :xmas2:
    Hoffe mein alter Dozent liest das nicht. Sonst melden. 😉 :xmas2:
    Ist in C++/CLI, kannst es aber in C# umbauen, sollte ja nicht das Problem sein.

    Int32 _max=0, _min=0, _primzahl=0, _divisor=0;
    Int32 _a, _b;//Variablen für die Zwischenspeicherung, wenn erforderlich
    Boolean _istEinePrimzahl = true;
    
    Console::Write("Ab welcher Zahl sollen die Primzahlen ausgegeben werden? ");
    _min = Convert::ToInt32(Console::ReadLine());
    Console::Write("Bis zu welcher Zahl sollen die Primzahlen ausgegeben werden? ");
    _max = Convert::ToInt32(Console::ReadLine());
    
    if (_min > _max) // Um zu vermeiden das die erste Zahl des Intervalls größer der zweiten.
    {		
    	_a = _min;
    	_b = _max;
    
    	_min = _b;
    	_max = _a;
    }
    
    if(_min < 1)//Wenn _min kleiner als 1, dann auf 2 setzen
    {
    	_min = 2;
    }
    
    for (_primzahl=_min; _primzahl <=_max; _primzahl++)
    {
        _istEinePrimzahl = true;
    
    	   //Ist die Zahl wirklich eine Primzahl?
           for (_divisor=2; _istEinePrimzahl && _divisor < _primzahl; _divisor++)
           {
               //Restlos teilbar?
               if (0 == _primzahl % _divisor)
               {
                   //Wenn die Zahl teilbar ist, ist es keine Primzahl!
                   _istEinePrimzahl = false;
               }
           }
    
           //Die Zahl ausgeben, wenn es eine Primzahl ist
           if (_istEinePrimzahl == true)
           {
    		Console::WriteLine("{0}",_primzahl) ;
           }
    }
    

    Gruß



  • Doug_HH schrieb:

    Ist in C++/CLI, kannst es aber in C# umbauen, sollte ja nicht das Problem sein.

    Doch. Wetten? 😃

    cheers, Swordfish


Anmelden zum Antworten