Teiler via VBA in Excel 2010

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