Ich benütige einen VBA Code für Excel 2010, der alle Primfaktoren einer Zahl bestimmt und via MsgBox ausgibt. Das sollte wenn möglich auch bei Zahlen mit bis zu 29 signifikanten Stellen möglich sein(Datentyp Decimal?).
Vielen Dank für jede schnelle Antwort,
layaxx
Hallo layaxx
Kannst du noch genauer erklären wobei du Hilfe brauchst?
Beim Algorithmus, also der Mathematik?
Oder mit Excel-Makros, wie man Resultate in Zellen schreibt? Oder nur welchen Datentyp du wählen sollst?
Grüsse, Marion
Fu, schwer. Ich nutze dafür ein Programm: http://apps.microsoft.com/windows/en-us/app/easy-fac…
Die Frage vielleicht mal den Experten stellen?
http://www.office-loesung.de/index3.php
Oder das skript selbst schreiben?
Du müsstest nur wissen, wie primzerlegung und skripten geht ^^
Ansonsten ist es evt. hilfreich, wenn du dein ganzes Vorhaben postest.
Mfg
Hallo layaxx,
da kann ich leider nicht weiter helfen.
Ich bin nicht gerade das Mathematikgenie.
Gruß Hugo
Hi;
schau dir mal „office_loesung.de/ftopic226249_0_0:asc.php“ geht recht nah an dein Problem
Gruß
Hallo layaxx,
da bin ich überfordert bzw. hab keine Lust mich in die Problematik der Primfaktoren einer Zahl einzuarbeiten.
Außerdem kann Excel nur Zahlen mit bis zu 15 signifikanten Stellen verarbeiten.
Gruß
Franz
Hallo,
ich kann dir dabei nicht helfen.
Meinst Du vielleicht sowas
http://www.mathetools.de/primfaktorzerlegung/
Guten Morgen,
ich hoffe ich habe das Problem richtig verstanden!
Sub test_Prim()
Dim Pzahlen() As Long
Dim verk() As Integer
Dim fakt() As Integer
p = 1
x = 1
dl = 0
a = InputBox(„zahl“)
ReDim Preserve Pzahlen§
Pzahlen§ = a
Do Until x > p
a = Pzahlen(x)
dl = dl + 1
For i = 2 To 9
antw = teiler(a, i)
If antw > 0 Then
p = p + 1
ReDim Preserve Pzahlen§
Pzahlen§ = antw
ReDim Preserve verk§
verk§ = x
ReDim Preserve fakt§
fakt§ = i
End If
Next i
x = x + 1
Loop
For i = 2 To p
antwstr = „“
antwstr = Pzahlen(i) & " X " & fakt(i)
If fakt(verk(i)) > 0 Then antwstr = „“
p = i
zw = Pzahlen(i)
zwf = fakt(i)
Do Until fakt(verk§) = 0
antwstr = antwstr & " " & fakt(verk§) & " X "
p = verk§
Loop
If fakt(verk(i)) > 0 Then antwstr = antwstr & zw & " X " & zwf
msgstr = msgstr + Chr$(13) & antwstr
Next i
MsgBox (msgstr)
End Sub
Function teiler(ByVal a As Long, ByVal b As Integer) As Long
teiler = 0
If Round(a / b, 1) = Round(a / b, 0) Then
teiler = Round(a / b, 0)
End If
End Function
Hallo,
meinst Du mit Primfaktoren jene Zahlen, die Primzahlen sind und als Produkt die gewünschte Zahl ausgeben.
Also zum Beispiel bei der Zahl 10 wären das 2 und 5 denn
5 mal 2 = 10.
Habe ich Dich so richtig verstanden?
Oder willst Du nur ein Programm, welches Die alle Primzahlen unterhalb einer Zahl ausgibt?
das wäre dann diese Variante:
Sub Primzahlen_ermitteln()
Dim Zahl As Long
Dim Divisor As Long
Dim Quotient As Double
Dim Text As String
Dim Titel As String
Dim Eingabe As String
Dim Teiler As Boolean
Dim Ogrenze As Long
Dim Ugrenze As Long
Dim i As Long
Dim j As Long
Titel = „Primzahlen ermitteln“
Text = „Bitte Zahl als ‚Untergrenze‘ eingeben!“
Beep
Eingabe = InputBox(Text, Titel, „1“)
If Eingabe = „“ Or Not IsNumeric(Eingabe) Then
GoTo Fehler
Else
Ugrenze = CLng(Eingabe)
End If
Text = „Bitte Zahl als ‚Obergrenze‘ eingeben!“
Beep
Eingabe = InputBox(Text, Titel, „1000“)
If Eingabe = „“ Or Not IsNumeric(Eingabe) Then
GoTo Fehler
Else
Ogrenze = Eingabe
End If
i = 2
j = 2
Range(„B2:B65536“).ClearContents
For Zahl = Ugrenze To Ogrenze
Teiler = False
Divisor = 2
Do Until Divisor ^ 2 > Zahl Or Teiler = True
Quotient = Zahl / Divisor
If Quotient = Int(Quotient) Then
Teiler = True
End If
Divisor = Divisor + 1
Loop
If Teiler = True Then
‚keine Primzahl
Else
‚Primzahl
Cells(i, 2).Value = Zahl
i = i + 1
If i Mod 500 = 0 Then
Application.StatusBar = „*** Bearbeite Zelle ''B“ & i & "‘‘ ***"
End If
j = j + 1
If j > 65533 Then
MsgBox „Spalte B ist voll!“, vbCritical, „Abbruch“
Exit Sub
End If
End If
Next Zahl
Application.StatusBar = „“
Exit Sub
Fehler:
MsgBox „Sie haben keine Zahl eingegeben !“ & Chr(13) & _
„Programm wird abgebrochen !“, vbCritical, Titel
End Sub
Gruß,
Ptonka