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.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
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!
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top


Gehe zu:


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