Registriert seit: 03.08.2017
Version(en): 2016
26.10.2023, 12:05
(Dieser Beitrag wurde zuletzt bearbeitet: 26.10.2023, 12:05 von otto55.
Bearbeitungsgrund: Wunsch
)
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!
Registriert seit: 16.04.2014
Version(en): xl2016/365
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
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
26.10.2023, 12:45
(Dieser Beitrag wurde zuletzt bearbeitet: 26.10.2023, 13:01 von LCohen.)
herber.de/excelformeln/pages/eine_Liste_aus_Primzahlen_erzeugen.htmlA1: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.
Registriert seit: 03.08.2017
Version(en): 2016
Danke, ich probier erst mal aus ...
Registriert seit: 29.09.2015
Version(en): 2030,5
26.10.2023, 16:02
(Dieser Beitrag wurde zuletzt bearbeitet: 26.10.2023, 16:08 von snb.)
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
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
VBA hier sicherlich die beste Alternative!