Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Primzahl Berechnung
#1
Brick 
    Guten Morgen, 

habe mir nun die letzten drei Tage den Kopf zerbrochen und kam leider immer noch nicht  auf die Lösung.

ich möchte eine Userform erstellen, in die man eine Primzahl über ein Textfeld eingibt, in Textfeld 2 soll dann ein entsprechender Text kommen ob es eine Primzahl ist oder nicht und welche zahl der Kleinste Teiler ist. 

Anbei meinen Code:



Code:
Private Sub CommandButton2_Click()
     Dim x As Double
     Dim prim As Double
     Dim a As Double
     Dim b As Double
     b = 0
     x = Me.TextBox1
     If x = 1 Then
         MsgBox ("Eine Primzahl muß einen Wert über 1 haben")
     Exit Sub
     End If
     For prim = 1 To x
         a = x / prim
         If a = Int(a) Then
             b = b + 1
         End If
     Next

    
     If b > 2 Then
         Me.TextBox2 = x & " ist keine Primzahl!" & vbCr & "Der erste gemeinsamme Teiler ist " & a
         Exit Sub
     Else
         Me.TextBox2 = x & " ist eine Primzahl!"
     End If
End Sub


Das Problem ist ich komme einfach nicht auf den kleinsten Teiler  :05:
Antworten Top
#2
Hallo

In Punkto Makro kann ich nicht viel helfen aber es gibt Ungereimtheiten in deiner Anfrage.

Zitat:eine Primzahl über ein Textfeld eingibt
[...]"Der erste gemeinsamme Teiler ist "
[...]welche zahl der Kleinste Teiler ist.
Entweder sucht du den kleinsten Teiler oder den gemeinsamen Teiler.
Für einen gemeinsamen Teiler brauchst du allerdings mindestens zwei Zahlen.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#3
(28.05.2016, 09:50)shift-del schrieb: Hallo

In Punkto Makro kann ich nicht viel helfen aber es gibt Ungereimtheiten in deiner Anfrage.

Zitat:eine Primzahl über ein Textfeld eingibt
[...]"Der erste gemeinsamme Teiler ist "
[...]welche zahl der Kleinste Teiler ist.
Entweder sucht du den kleinsten Teiler oder den gemeinsamen Teiler.
Für einen gemeinsamen Teiler brauchst du allerdings mindestens zwei Zahlen.

ich habe  ein Feld in das man eine Zahl einträgt 

z.B.  27


danach soll im zweiten Feld stehen:

27 ist keine Primzahl der erste ganzzahlige Teiler ist 3
Antworten Top
#4
Hallo,

für Deine erste Aufgabe guckst Du hier:

http://excelformeln.de/formeln.html?welcher=129

Zweite Aufgabe dürfte hiermit erschlagen werden:

http://excelformeln.de/formeln.html?welcher=167
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#5
(28.05.2016, 13:25)BoskoBiati schrieb: Hallo,

für Deine erste Aufgabe guckst Du hier:

http://excelformeln.de/formeln.html?welcher=129

Zweite Aufgabe dürfte hiermit erschlagen werden:

http://excelformeln.de/formeln.html?welcher=167

Hallo,

Danke für deine Antwort, aber leider muss das ganze über VBA programmiert werden und nicht über excel Formeln.

Liebe Grüße 

Marco
Antworten Top
#6
(28.05.2016, 13:25)BoskoBiati schrieb: Hallo,

für Deine erste Aufgabe guckst Du hier:

http://excelformeln.de/formeln.html?welcher=129

Zweite Aufgabe dürfte hiermit erschlagen werden:

http://excelformeln.de/formeln.html?welcher=167
Also Leute es Läuft!!!!!!!!!

Hier ist der Code:

Code:
Private Sub CommandButton2_Click()

     Dim x As Double
     Dim prim As Double
     Dim a As Double
     Dim b As Double
     b = 0
     x = Me.TextBox1
     If x = 1 Then
         MsgBox ("Eine Primzahl muß einen Wert über 1 haben")
     Exit Sub
     End If
     For prim = 2 To x
         a = x / prim
         If a = Int(a) Then
             b = b + 1
             Exit For
             
         End If
     Next
Debug.Print a & "A"
Debug.Print x & "x"
Debug.Print b & "b"
Debug.Print prim & "prim"

     If prim > 2 Then
         Me.TextBox2 = x & " ist keine Primzahl !" & vbCr & "Der erste ganzzahlige Teiler ist " & prim
         Exit Sub
     Else
         Me.TextBox2 = (x & " ist eine Primzahl")
     End If
End Sub

'es war nur die Variable für die If Anweisung falsch anstatt B hätte es Prim sein müssen :)
Antworten Top
#7
Code:
Sub M_snb()
    y = 23


    For j = 3 To y Step 2
      If y Mod j = 0 Then Exit For
    Next

    MsgBox y & " ist " & IIf(j = y, "", "k") & "ein Primzahl"
End Sub
Antworten Top
#8
Hallo,

dann eher so:


Code:
Sub M_snb()
Dim y As Long
Dim j As Long
    y = Cells(1, 1)
    For j = 3 To y Step 2
      If y Mod j = 0 Then Exit For
    Next
    MsgBox y & " ist " & IIf(j = y, "", "k") & "eine Primzahl" & IIf(j <> y, ", Teiler: " & j, "")
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#9
Hi,

anbei noch weniger Durchläufe und Fehlerbehandlung :)

.xlsb   prim_mit_makro.xlsb (Größe: 21,78 KB / Downloads: 5)
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#10
Hallo,

das Makro von snb braucht, je nach Größe der Zahl 16-17s, das des TE mehr als die dreifache Zeit und bringt ein falsches Ergebnis!:


Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDE
1600000001snb 16988Bosko 0Func 0TE 54725
2Primzahl600000001 ist keine Primzahl !

Der erste ganzzahlige Teiler ist 600000001
   
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Schneller geht es damit:

Code:
Private Sub M_bosko()
Dim y As Double
Dim j As Double
Dim x As Long
Dim bol As Boolean
bol = False
    y = Cells(1, 1)
    x = Int(Sqr(y))
    For j = 3 To x Step 2
      If y Mod j = 0 Then bol = True: Exit For
    Next
    MsgBox y & " ist " & IIf(bol = False, "", "k") & "eine Primzahl" & IIf(bol = True, ", Teiler: " & j, "")
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


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