Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1252to1256
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PrimQuersumme

PrimQuersumme
Alifa
Hallo,
kann mir jemand mit einer Funktion helfen, die Folgendes kann:
eine Zahl in ihre Primfaktoren zerlegen, diese ,jeweils nur einmal, addieren. Beispiel:369=3*3*41.
PrimQuersumme =3+41=44. Oder 213444=2*2*3*3*7*7*11*11. PrimQuersumme=2+3+7+11=23
Danke im Voraus
Erhard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: PrimQuersumme
11.03.2012 08:25:46
ransi
HAllo Erhard
Teste mal selber auf "Herz und Nieren":
Tabelle1

 ABCD
13693*3*4144 
22134442*2*3*3*7*7*11*1123 
31234567891233*12049*34154093427461 
4    
5    

Formeln der Tabelle
ZelleFormel
B1=myprims(A1)
C1=primquersumme(myprims(A1))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Function primCheck(lngZahl) As Boolean
    Dim i
    If lngZahl > 4 Then
        If lngZahl / 2 = Int(lngZahl / 2) Then Exit Function ' Zahl ist durch 2 teilbar
        If lngZahl / 3 = Int(lngZahl / 3) Then Exit Function ' Zahl ist durch 3 teilbar
        For i = 6 To Int(Sqr(lngZahl)) + 1 Step 6
            If lngZahl / (i - 1) = Int(lngZahl / (i - 1)) Then Exit Function
            If lngZahl / (i + 1) = Int(lngZahl / (i + 1)) Then Exit Function
        Next
        primCheck = True
    Else ' es verbleiben die Zahlen <= 4, von denen sind nur 2 und 3 Primzahlen
        primCheck = lngZahl = 2 Or lngZahl = 3
    End If
End Function



Public Function myprims(zahl) As String
    Dim dummy As String
    Dim test
    Dim wurzel
    Dim pruefen
    If zahl <= 1 Then Exit Function
    test = zahl
    wurzel = Sqr(zahl)
    While primCheck(test) = False
        For pruefen = 2 To wurzel
            If (test / pruefen) = Int(test / pruefen) Then
                dummy = dummy & pruefen & "*"
                test = test / pruefen
                wurzel = Sqr(test)
                Exit For
            End If
        Next
    Wend
    dummy = dummy & test
    myprims = dummy
End Function



Public Function PrimQuersumme(strPrims As String) As Long
    Dim myDic As Object
    Dim L As Long
    Dim vntarr As Variant
    Set myDic = CreateObject("Scripting.dictionary")
    vntarr = Split(strPrims, "*")
    For L = LBound(vntarr) To UBound(vntarr)
        If Not myDic.exists(vntarr(L)) Then
            myDic(vntarr(L)) = 0
            PrimQuersumme = Clng(PrimQuersumme) + Clng(vntarr(L))
        End If
    Next
End Function


ransi
Anzeige
AW: PrimQuersumme
11.03.2012 10:39:55
Alifa
Hallo Ransi,
habe die Funktion in mein Programm eingefügt, funktioniert ausgezeichnet. Vielen Dank!
Erhard
AW: @ransi: Primzahl zerlegen
11.03.2012 12:30:23
Dieter(Drummer)
Hi Ransi,
die Sache hat mich fasziniert und ich habe eine Frage/Bitte: Z.B. In A1 habe ich die Primzahl. In B2 sool die Eingabe einer Function möglich sein, die als Ergebnis die Darstellung der Zerlegung der Primzahl in die einzelnen Faktoren zeigt. Z.B. A1 =126 ergibt in B1 = 2*3*3*7 - Ist keine Primzahl!
Wenn es sich um eine Primzahl handelt. soll aber auch die Faktorenzerlegung angezeigt werden.
Dein Makro "myprims ,,," ist prima und zeigt aber nur die Zerlegung, wenn es keine Primzahl ist.
Freue mich, wenn du dafür auch ein Lösung hast und Danke fürs drum kümmern.
Gruß
DieterDrummer)
Anzeige
AW: @ransi: Primzahl zerlegen
11.03.2012 12:46:00
ransi
HAllo Dieter
Ich fürchte ich hab dich nicht verstanden.
Wenn es sich um eine Primzahl handelt. soll aber auch die Faktorenzerlegung angezeigt werden.
Wenn die Zahl eine Primzahl ist kann man sie nicht weiter zerlegen .
Gib mir doch bitte mal ein Beispiel wie du das meinst.
ransi
AW: @ransi: Primzahl zerlegen
11.03.2012 12:54:52
Dieter(Drummer)
Hi Ransi,
Danke für schnelle Rückmeldung. Man oh man. da hab ich wohl mir selbst ein Ei gelegt, da ja eine Primzahl nur durch sich selbst oder durch 1 Teilbar ist und somit keine weitere Zerlegung in einzelne Faktoren möglich ist.
Sorry für Frage und Danke deine Bemühung und Denkanstoß.
Gruß
Dieter(Drummer)
Anzeige
AW: @ransi: Primfaktorenzerlegung
12.03.2012 18:20:55
Dieter(Drummer)
Hi Ransi,
dieses Thema hat mich nich nicht losgelassen und habe eine Frage/Bitte:
Wenn eine n-Zahl (keine Primzahl) z.B. 1324 in die Primfaktoren 2*2*131 zerlegt wird - mit deiner Function "myprims" - suche ich die Möglichkeit die Primfaktoren so aufzulösen: 2*2(4)*131.
Das heißt, nach jeder Mulitiplikation sollen die Zwischnergebnisse, hier die (4) mit gezeigt werden. Bei größeren Zahlen also immer ein Zwischenergebnis in Klammer auch gezeigt werden. Also z.B. auch bei: 23456 in 2*2(4)*2(8)*2(16)*2(32)*733.
Würde mich freuen, wenn das auch möglich wäre.
Danke für's drum kümmern und Gruß
Dieter(Drummer)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige