Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1628to1632
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

Primzahlen bestimmen

Primzahlen bestimmen
14.06.2018 17:04:44
Idence
Hallo,
ich habe folgenden Code geschrieben um Primzahlen gelb und Nicht-Primzahlen rot zu markieren. _ Das mathematische Verfahren ist nach dem Prinzip vom "Sieb des Eratosthenes". Die Zahlen sind von oben nach unten in der Spalte A.

Sub Sieb()
Dim n, zahl As Integer
Dim rngSuche As Range
Dim gefunden As String
On Error Resume Next
n = 1
Do While Cells(n, 1)  ""
If Cells(n, 1).Interior.Color  9013759 Then 'Farbe gelb
'erste Primzahl markieren
Cells(n, 1).Interior.Color = 10223615 'Farbe rot
'seine Vielfache bestimmen
Do While gefunden  "nein"
If zahl = 0 Then
zahl = Cells(n, 1)
End If
zahl = zahl + Cells(n, 1)
'Suche nach Zahl
Set rngSuche = Tabelle1.Range("A1:A1000").Find(what:=zahl, LookIn:=xlValues) _
_
_
'Rotfärbung, wenn gefunden
If Not rngSuche Is Nothing Then
Cells(rngSuche.Row, 1).Interior.Color = 9013759
Else
gefunden = "nein"
End If
Loop
n = n + 1
gefunden = ""
zahl = 0
Else
n = n + 1
End If
Loop
MsgBox "fertig"
End
Bis Zahl 1001 ermittelt dieser Code die richtigen Primzahlen, doch ab dieser Zahl glaubt er,  _
dass alles nur noch Primzahlen sind.
Hat jemand eine Idee, woran dies liegen könnte?
Gruß
Idence
Hier die Datei:
https://www.herber.de/bbs/user/122130.xlsm  _
_
_
a>


		

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Primzahlen bestimmen
14.06.2018 17:16:08
mmat
Interessanter Ansatz ;-)
Dein Problem ist hier, die Suche wird auf 1000 Zeilen Beschränkt
 Set rngSuche = Tabelle1.Range("A1:A1000").Find(what:=zahl, LookIn:=xlValues) 

AW: Primzahlen bestimmen
18.06.2018 09:46:20
Idence
Hallo mmat,
so einfach ist also die Lösung, das hatte ich komplett vergessen und habe an ganz anderen Stellen gesucht, vielen Dank für deine Erinnerung.
Gruß
Idence
AW: Primzahlen bestimmen
18.06.2018 14:38:05
mmat
Hallo,
ja, ich dachte mir schon, dass du das nur programmierst um mal zu sehen, wie das geht. Daher noch eine kleine Anmerkung: die ganze Suche ist überflüssig. Die zu färbende Zelle ist immer
Cells(zahl, 1)
- oder
Cells(zahl -1,1) '--> (wenn deine Liste mit 2 anfängt)
Anzeige
AW: Primzahlen bestimmen
14.06.2018 17:41:57
UweD
Hallo
wenn die Liste schon besteht dann so..

Tabelle1
 ABC
12 Wahr
23 Wahr
34 Falsch
45 Wahr
56 Falsch
67 Wahr
78 Falsch
89 Falsch
910 Falsch
1011 Wahr
1112 Falsch
1213 Wahr
1314 Falsch
1415 Falsch
1516 Falsch
1617 Wahr
1718 Falsch
1819 Wahr
1920 Falsch
2021 Falsch
2122 Falsch
die bedingte Formatierung Fülleffekte, Symbole, Datenbalken
werden in dieser Tabelle nicht dargestellt

verwendete Formeln
Zelle Formel Bereich N/A
C1:C21=IstPrim(A1)  

Bedingte Formatierung Haupttabelle 1  
Wird angewendet auf   Nr. Bed.  Regeltyp  Operator   Formel1   Formel2   Format Schrift Füll-farbe   Unterstrichen   Schrift- farbe Muster   Muster-farbe Typ Bereich
$A$1:$A$2201.Bed.: Formel ist =NICHT(IstPrim(A1))  255         2$A$1:$A$22
$A$1:$A$2202.Bed.: Formel ist =IstPrim(A1)  65535         2$A$1:$A$22
Bedingte Formatierung Haupttabelle 2 oberere/unterer Bereich    
Wird angewendet auf   Nr. Bed.  Format Zelle Anhalten Auswahl   Anzeige   Anzahl   Durchschnitt   Typ   Bereich
$A$1:$A$2201.Bed.   Falsch          2$A$1:$A$22
$A$1:$A$2202.Bed.   Falsch          2$A$1:$A$22
Die Bedingungen wurden mit Excel-Version ab 2007 ausgelesen.

Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 25.14 einschl. 64 Bit


Verwendet wird folgende kurze Function (nicht von mir)
Public Function IstPrim(Zahl) As Boolean
   Dim i As Double
   For i = 2 To Int(Sqr(Zahl))
      If Zahl Mod i = 0 Then
         IstPrim = False
         Exit Function
      End If
   Next i
   IstPrim = True
End Function

LG UweD
Anzeige
AW: Primzahlen bestimmen
18.06.2018 09:48:00
Idence
Hallo UweD,
danke sehr.
Gruß
Idence
AW: Primzahlen bestimmen
14.06.2018 21:56:55
Barbaraa
Falls Du nicht unbedingt auf eine Makrolösung wert legst:
Mit "Bedingte Formatierung"
Gehe in die Zeile 1 einer Spalte Deiner Wahl.
Rufe Bedingte Formatierung im Menü Start auf.
Rufe Neue Regel auf, dort Formel zur Ermittlung der zu formatierenden Zellen verwenden wählen.
Kopiere dort folgende Formel hinein:
=SUMME(VORZEICHEN(REST(ZEILE(A2);ZEILE(A1:A$2))))=ZEILE(A2)-2
Unter Formatieren, Ausfüllen wähle die Farbe Deines Geschmacks (ausser weiss und schwarz).
Drück OK sooft, bis Du wieder draussen bist.
Kopiere dann diese Zelle hinuter (auch in andere Spalten), soweit du willst.
Jetzt sind alle Zellen farblich markiert, deren Zeilennummer prim ist.
Vorteil: Du kannst dann in die Zeilen reinschreiben, was Du willst.
Nachteil: Das Reinschreiben dauert etwas.
Mit einer Formel:
Gehe in die Zelle A2 und drück die F2-Taste!
Kopiere folgende Formel hinein:
=WENN(SUMME(VORZEICHEN(REST(ZEILE(A2);ZEILE(A1:A$2))))=ZEILE(A2)-2;"prim";"")
Dann drück zugleich die STRG+Umschalttaste und lass nicht los.
Drück die Entertaste und lass alle Tasten aus.
Jetzt soll die Formel in der Bearbeitungszeile oben von zwei geschweiften Klammern umschlossen sein.
Kopiere diese Zelle wohin Du willst (auch in andere Spalten), nur nicht in Zeile 1 und nicht auf sich selbst.
Nun steht in jeder Zelle "prim", deren Nummer eine Primzahl ist.
Hilft das?
LGB
Anzeige
einfachere Formel
14.06.2018 22:26:28
WF
Hi,
statt
{=SUMME(VORZEICHEN(REST(ZEILE(A2);ZEILE(A1:A$2))))=ZEILE(A2)-2}
nimmst Du:
{=KKLEINSTE(REST(ZEILE(A2);ZEILE(X$1:X3));3)>0}
WF
AW: Primzahlen bestimmen
18.06.2018 09:52:33
Idence
Hallo Barbara,
da ich lieber einen Code schreibe, statt mit Excel-Formeln zu arbeiten, ist es mein Ziel gewesen, ein Makro hinzukriegen, der die Aufgabe bewältigt. Aber da mein "Fehler" in meinem Code gefunden wurde, ist alles wieder in Ordnung.
Vielen Dank für deine Hilfe.
Gruß
Idence

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige