Aufgabe
Folgende Formeln geben an, ob die Zahl in A1 eine Primzahl ist.
Lösung
Ab 3 bis 65.536 = 2^16 (max. Zeilenzahl):
{=WENN(SUMME(WENN(REST(A1;ZEILE(INDIREKT("2:"&A1-1)));0;1));"";"Primzahl")}
Kürzer mit Verdoppelung auf 131.072 = 2^17 - und die 2 wird als Primzahl erkannt:
{=WENN(KKLEINSTE(REST(A1;ZEILE(A:A));3);"Primzahl";"")}
ohne Abschluss als Arrayformel:
=WENN(SummenPRODUKT((REST(A1;ZEILE(A:A))=0)*1)>2;"";"Primzahl")
Ab 3 bis ca. 268 Millionen (2^28-1):
{=WENN(SUMME(WENN(REST(A1;ZEILE(INDIREKT("2:"&AUFRUNDEN(A1^0,5;0))));0;1));"";"PRIMZAHL")}
Ab 7 bis etwas über17 Milliarden (ca. 2^34) bei Ersatz der Funktion REST:
{=WENN(GANZZAHL(A1/2)<>A1/2;WENN(SUMME((GANZZAHL(A1/(ZEILE(INDIREKT("2:"&AUFRUNDEN(A1^0,5/2;0)+1))*2-1))=A1/(ZEILE(INDIREKT("2:"&AUFRUNDEN(A1^0,5/2;0)+1))*2-1))*1);"";"Primzahl");"")}
Erläuterung
Excel-bug: die Funktion REST gibt den Geist auf, wenn das Ergebnis der Division >= 2^27 ist.
=REST(2^28-1;2) wird noch berechnet; =REST(2^28;2) ergibt #WERT!
Bei neueren Excelversionen erhöht sich die Begrenzung auf 1.048.576
(Maximale Zeilenzahl: 2^20 statt 2^16)