Feedback

Primzahlenüberprüfung

Sprache: C#

Einfache Methode um zu überprüfen ob eine Zahl Prim ist.
 public static bool PrimzahlÜberprüfen(int testzahl)
        {
            bool primJN = true;

            for (int i = 2; i <= (Math.Round(Math.Sqrt(testzahl))) ; i++)
            {

                    if (testzahl % i == 0)
                    {
                        primJN = false;
                        break;
                    }
                    else
                    {
                        primJN = true;
                    }
                 
            }
            return (primJN);
        }
 public static bool PrimzahlÜberprüfen(int testzahl)
        {
            bool primJN = true;

            for (int i = 2; i <= (Math.Round(Math.Sqrt(testzahl))) ; i++)
            {

                    if (testzahl % i == 0)
                    {
                        primJN = false;
                        break;
                    }
                    else
                    {
                        primJN = true;
                    }
                 
            }
            return (primJN);
        }

3 Kommentare

  1. Genau genommen darf man
    return testzahl % i == 0;
    nur dann machen wenn es keine Primzahl ist.
    Außerdem braucht man auf gerade Zahlen nicht prüfen. Zusätzlich sollte man sich gleich noch das Maximum vor der Schleife merken, da sonst auch Leistung verschwendet wird. So ganz nebenbei kann man das ganze auch mit ulong prüfen, da sind wesentlich größere Zahlen möglich.
    [code] static bool IsPrime2(ulong t)
    {
    if (t % 2 == 0 || t < 2)// Gerade Zahlen und Zahlen kleiner 2 ausschließen if (t == 2) // 2 ist eine Primzahl return true; else return false; ulong x = (ulong)Math.Floor(Math.Sqrt(t)); //Maximal zu prüfende Zahl vorher merken for (ulong i = 3; i <= x; i += 2) //Floor, da aufrunden nicht nötig if (t % i == 0) return false; return true; }[/code] @Saimon: Dein Code funktioniert natürlich, ist aber um einiges langsamer als meiner 😉 @Martin: Nach deinem Code wären Zahlen wie 11 und 13 keine Primzahlen 😉