Feedback

C# - Primzahlenüberprüfung

Veröffentlicht von am 08.11.2012
(0 Bewertungen)
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);
        }
Abgelegt unter Prim, Primzahl.

3 Kommentare zum Snippet

Martin Dauskardt schrieb am 10.11.2012:
Das wäre dann Version 258 :-)

if (testzahl % i == 0)
{
return false;
}
else
{
return true;
}
}
Martin Dauskardt schrieb am 10.11.2012:
noch kürzer:

...

return testzahl % i == 0;

Dann kannst du dir die Variable primJN und das break schenken..
Koopakiller schrieb am 29.12.2012:
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.
        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;
}

@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 ;)
 

Logge dich ein, um hier zu kommentieren!