Excel Formelbefehle: Ist Zahl Primzahl
Hallo,
Ich kenne mich den Formelbefehlen für Excel nicht sonderlich aus und habe eine Frage dazu:
Ich habe in Spalte 1 "Primzahl" eine Liste aller Primzahlen (aus dem Internet kopiert). In Spalte 2 "Zahl" notiere ich mir bis zu einem bestimmten Punkt alle natürlichen Zahlen (1, 2, 3, 4...100). In Spalte 3 "Ist Primzahl" möchte ich jeweils eine binäre Aussage, einen Boolean, von mir aus 1 oder 0, ob die Zahl eine Primzahl ist.
Ich glaube, irgendwann einmal so einen "Suchen"-Befehl gehört zu haben, kann mich aber leider nicht mehr daran erinnern.
Wie geht das?
Mit freundlichen Grüßen,
KnorxThieus
5 Antworten
Erfasse in C1 folgende Formel:
=WENN(ZÄHLENWENN(A:A;B1)>0;"Prim";"")
das dann einfach nach unten ziehen solange in Spalte B Zahlen vorhanden sind-
da er nur WAHR bzw FALSCH will, reicht sogar
=ZÄHLENWENN(A:A;B1)>0
@ clemensw: oder, wenns 0 bzw 1 sein soll:
=(ZÄHLENWENN(A:A;B1)>0)*
1
- Setze hinter jede Primzahl (Spalte einfügen) den Wert 1.
- Sortiere die Primzahlen (fall noch nicht sortiert)
- Wende den Befehl SVERWEIS an:
=SVERWEIS(C1;A1:B100;2;FALSCH)
C1 ist die Zahl, von der Du wissen willst, ob sie prim ist
A1:B100 ist die Liste der ersten 100 Primzahlen, in Spalte B steht jeweils der Wert 1
2 ist die Spalte die zurückgegeben wird
FALSCH bedeutet, es wird eine genaue Übereinstimmung gesucht.
Siehe http://office.microsoft.com/de-de/excel-help/sverweis-HP005209335.aspx
Soweit ich deine Frage verstanden habe, willst du alle Primzahlen auflisten. Dafür hast du schon eine Liste aller Primzahlen aufgelistet. Diese vorgegebene Liste ist aber unnötig mit folgender Funktion:
=SUMME(WENN(REST(B3;MATRIXERSTELLEN(B3;1;LAMBDA(x;s;x)))=0;1;0))=2
Die zu testende Zahl steht dabei jetzt im Feld B3. Je nachdem, ob im Feld B3 eine Primzahl steht, gibt die Formel entweder WAHR oder FALSCH aus.
Ich bin jetzt auch kein Excel-Profi, habe aber ein bisschen rumprobiert und bin dazu gekommen. Daher ist es wahrscheinlich nicht die schönste Variante.
Das führt zu 1000 #NV-Fehlern und die Performance der Datei wird sagen wir es mal vorsichtig suboptimal.
SVERWEIS ist kein Allheilmittel. Vor allem ist er NICHT dazu geeinegt zu vergleichen ob bestimmte Zahlen in einer Liste vorkommen oder nicht.
Danke erstmal für die Antwort!
Ich habe jetzt ein bisschen rumprobiert und es so weit gebracht, dass in Spalte A von A2 bis A170 die Primzahlen sortiert stehen, in Spalte B die 1sen - erklärst du mir noch, wofür die gut sind? - in Spalte C die Liste aller Zahlen bis zur größten Primzahl und in Spalte D die Formel
=SVERWEIS(C2;A$2:B$170;2;FALSCH)
die ich aufgrund der Spaltenbeschriftungen (C2, A2) noch abgeändert habe und die Dollarzeichen gesetzt habe, vorher kam immer nur #NV als Lösung. Jetzt kommt bei Primzahlen 1, ansonsten #NV.
Wie behebe ich das?
Mit freundlichen Grüßen,
KnorxThieus
SVERWEIS (lies am besten mal den Link) bedeutet:
Suche den Wert C2 in der ersten Spalte der Matrix A2 bis B170.
Falls Du den genauen Wert (daher "FALSCH") findest, liefere den Wert in der 2. Spalte (alos die 1) zurück
Ein Fehler ist mir noch aufgefallen: Du solltest die Matrix komplett arretieren, als $A$2:$B$170
Achso, dann habe ich jetzt verstanden.
Aber bei den Nicht-Primzahlen bleibt dennoch #NV stehen! Schaffe ich da Abhilfe mit WENNFEHLER?
Edit: Ja, das habe ich ausprobiert, klappt.
Hallo,
würde die Formeln von hier kopieren:
Ich will sie ja nicht ermitteln, sondern mit einer Liste abgleichen.
Die Frage bezüglich Excel-Befehlen haben schon andere beantwortet (außerdem hab ich kein Excel am PC), zu deinem ersten Satz "Ich habe in Spalte 1 "Primzahl" eine Liste aller Primzahlen (aus dem Internet kopiert)" möchte ich meine Verwunderung zum Ausdruck bringen: Wenn du in Spalte 1 alle Primzahlen stehen hast, hast du höchstwahrscheinlich ein Problem! Es gibt nämlich unendlich viele Primzahlen - diese alle auf dem PC zu speichern, ist ein Ding der Unmöglichkeit ;-)
Größte, derzeit bekannte Primzahl: 2^{57.885.161}-1, eine Zahl mit 17.425.170 (dezimalen) Stellen - "gefunden" am 25.1.2013 → siehe Wikipedia.
Korinthenkackerei - ich meinte natürlich eine Liste aller Primzahlen <= (kleiner gleich) 1000...
IF(COUNTIF(A0:A100,A0)>0,"true", "false")
Hab's nicht getestet, sollte aber so in etwa gehen.
Die Formel enthält einen Fehler...
Sagt mir nichts, kannst du das verbessern?
erstens gibt es kein A0, zweitens ist eine englische Formel fürs deutsche Excel nicht geeignet, drittens iat "true" bzw "false" ein Text, kein Boolean!
müsste heissen (ebenfalls Trockenübung):
=Wenn(Zählenwenn(A1:A100,A1)>0,WAHR,FALSCH)
Schade, dass der an sich gute Denkansatz so verschludert wurde!
Ich hab's schon clemensws Hilfe + WENNFEHLER geschafft!