Php Primzahlbestimmung?

osion  04.07.2021, 15:11

Deine Frage ist wie man Primzahlen berechnet?

akitashi60 
Fragesteller
 04.07.2021, 15:17

Wie ich mit php eine primzahlbestimmung durchführe, um die obige aufgabe zu lösen

3 Antworten

Wenn du per PHP eine Primzahlbestimmen willst, dann musst du durch jede Zahl versuchen zu teilen. Jetzt kannst du einfachalber durch bestimmte Zahle schon vor untersuchen, z. B. 2 = keine gerade Zahl, 5 = keine mit 0 und 5. Wenn du hohe Zahlen wie 93429034872309482905743059283490 hast, dann ist das wichtig.

Das ganze machst du mit Modulo: https://www.w3schools.com/php/phptryit.asp?filename=tryphp_oper_modulus

Wenn die Zahlen nicht allzu groß werden, hinterlege einfach einfach eine Liste der Primzahlen und teste, ob sich die Zahl durch eine der hinterlegten Zahlen dividieren lässt. Das funktioniert dann nur bei Zahlen, die maximal so groß sind die höchste gespeicherte Primzahl zum Quadrat...

$prim = Array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997);
$istprim = true;
$i = 0;
while(($prim[$i]<sqrt($zahl)) && ($i<count($prim))) {
  if (($zahl % $prim{$i]) == 0) {
    $istprim=false;
    break;
  }
  $i++;
}

Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin
wunschname0302  04.07.2021, 15:43

Allgemeiner wohl als "Sieb des Eratosthenes" bekannt.

0
iQa1x  04.07.2021, 16:16
@wunschname0302

Naja, im Prinzip ja, aber die fangen da ja mit allen Zahlen an und entfernen dann in jedem Durchlauf die durch die aktuelle Zahl teilbare, das spart die Liste im Code, dauert aber länger.

So einen Test gegen die n kleinsten Primzahlen wird aber von vielen Programmen als schneller Vortest genutzt.

1
akitashi60 
Fragesteller
 04.07.2021, 15:44

Die idee find ich gut, aber das testen, ob sie sich dividieren lässt versteh ich nicht und funktioniert nicht

0
akitashi60 
Fragesteller
 04.07.2021, 15:49

Wenn ich jetzt diesen array mit den primzahlen habe, wie kann ich testen, ob die zahl in dem array vorkommt?

0