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);
}
Alte URL:
/snippet/primzahlenueberpruefung/1644
Das wäre dann Version 258 🙂
if (testzahl % i == 0)
{
return false;
}
else
{
return true;
}
}
noch kürzer:
…
return testzahl % i == 0;
Dann kannst du dir die Variable primJN und das break schenken..
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 😉