Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Primzahlen und Primquadrate
#1
Gibt es in Excel eine Funktion, die die Anzahl der Primquadrate kleiner einer Zahl x angibt?

Was ist ein Primquadrat. 7 ist eine Primzahl, 49 das dazugehörige Primquadrat.

Bitte nicht so eine riesengrosse Formel, sondern was Einfaches!
Antworten Top
#2
Hola,
dann schreib die Primzahlen untereinander, daneben das jeweilige Quadrat und zähle mit Zählenwenn() wieviele dieser Quadrate kleiner als X sind.
Gruß,
steve1da
Antworten Top
#3
herber.de/excelformeln/pages/eine_Liste_aus_Primzahlen_erzeugen.html

A1:A5: ={2;3;5;7;11}
A6[:A2225]: =LET(n;50;
x;SEQUENZ(n;;A5+1);
y;SEQUENZ(AUFRUNDEN((A5+n)^0,5;0)-1;;2);
MIN(WENN(MMULT((REST(x;MTRANS(y))=0)*1;WENN(y;1))=0;x)))


Will man höher als die 2225. Primzahl (19609) gehen, muss man n=50 erhöhen. Außerdem beginnt man z.B. mit n=500 in A10: mit dem Bezug auf A9: 23 statt A5: 11. Die Rechenzeit steigt von 2-3 auf ca. 30-120 Sekunden (bei 8 Prozessor-Threads), wenn man bis A10000: 104729 herunterkopiert.

A1:A9: ={2;3;5;7;11;13;17;19;23}

Ich habe nicht überprüft, ob die resultierende Primzahlenliste A6:A2225 oder A10:A10000 stimmt. Die Funktion aus dem Link habe ich auf XL365 angepasst.
Antworten Top
#4
Danke, ich probier erst mal aus ...
Antworten Top
#5
In VBA:
n = höchste Wert
Hier max 20 sek. bei >10^6 Primzahlen

Code:
Sub M_snb()
  Dim n As Long, j As Long, y As Long, t As Long, sn() As String
  t1 = Timer

  n = 15 * Rows.Count
  p = Int(n / (Log(n) - 2))
  ReDim sn(1 To n)
   
  For j = 1 To n Step 2
    sn(j) = j
  Next
 
  For j = 2 To p
    If sn(j) <> "~" Then
      For jj = j + j To UBound(sn) Step j
        sn(jj) = "~"
      Next
    End If
  Next
   
  With CreateObject("New:{8BD21D20-EC42-11CE-9E0D-00AA006002F3}")
    .List = Filter(sn, "~", 0)
    ActiveSheet.Cells(1).Resize(.ListCount) = .List
  End With

  MsgBox Timer - t1
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
VBA hier sicherlich die beste Alternative!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste