Variablen Eratosthenes mit Integer Array

flatpat

Mitglied
hallo zusammen,

ich möchte mein array mit "0" befüllen. dazu verwende ich die variable "horsty" mit startwert 2.
sobald der modulo von array und horsty = 0 ist, soll eine 0 im array stehen.

horsty würde ich gerne mit horsty++ erhöhen. und hier liegt das problem. sowohl wenn ich "horsty++" in die for-schleife schreibe (mit komma, hinter i++), also auch wenn ich es unter "sieb=0" schreibe, kommt nichts vernünftiges raus


Code:
public class PrimNeu
{
	public static int[] arrayAn(int a)
	{
		int [] start = new int[a];
		for (int i=0; i<start.length; i++)
		{
			start[i] = i;
		}
		return start;
	}
	public static int[] prim(int[]sieb)
	{
		int horsty = 2;
		for (int i=1; i<sieb.length; i++)
		{	
			if (sieb[i] % horsty == 0)
			{
				sieb[i]=0;

			}
			else
			{
				sieb[i]=i;
			}
		}
		return sieb;
	}				

	public static void main(String[] args) 
	{
		System.out.println(java.util.Arrays.toString(prim(arrayAn(28))));

	}

}

ausgabe mit horsty = 2:
Code:
[0, 1, 0, 3, 0, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0, 25, 0, 27]
ausgabe mit horsty = 3:
Code:
[0, 1, 2, 0, 4, 5, 0, 7, 8, 0, 10, 11, 0, 13, 14, 0, 16, 17, 0, 19, 20, 0, 22, 23, 0, 25, 26, 0]

das passt ja soweit.

Code:
for (int i=1; i<sieb.length; i++, horsty++)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]

macht gar nix :(

Code:
{	
			if (sieb[i] % horsty == 0)
			{
				sieb[i]=0;
				horsty++;
[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


ich finde mein programm logisch sehr gut :) und fürchte ich habe irgendwo einen richtig doofen fehler.
kann mir jemand helfen?
danke
 

Jodo

Aktives Mitglied
Java:
for (int i=1; i<sieb.length; i++, horsty++)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
macht gar nix :(

Hast du die Initialisierung anfangs
Code:
int horsty = 2;
so gelassen? Dann kann ja nichts passieren, da horsty immer i + 2 ist. und bei ner Modulorechnung da immer i rauskommt ;)
 

flatpat

Mitglied
ja hab ich, und du hast recht. aber wo soll ich es denn sonst hinschreiben?
wenn ich es direkt unter den klassennamen mit
Code:
static int horsty = 2
initialisiere, bekomme ich das selbe ergebnis (also er macht gar nix)
 

Jodo

Aktives Mitglied
Wieso willst du horsty mit hochzählen? Und was genau willst du machen?
Aus deinen anderen Ausgaben schätze ich, du willst die Zahlen rausnehmen die glatt durch 2,3,4,... etc teilbar sind und durch '0' ersetzen? Soll dir dann folgende Ausgabe, durch einen Programmablauf ausgegeben werden?

Code:
[0,1,0,3,0,5,0,7,0,9,...]
[0,1,2,0,4,5,0,7,8,0,...]
[0,1,2,3,0,5,6,7,0,9,...]

Oder willst du das Primzahlsieb programmieren, wie der Thread Titel und deine Methodennamen schliessen lassen?
 

flatpat

Mitglied
ich möchte das primzahlen sieb programmieren.

deshalb soll horsty von 2 bis array.length durchlaufen und modulo mit den verbliebenen array-integern machen.

immer wenn der modulo = 0 ist, soll an der stelle eine "0" ins array eingetragen werden.
 

Jodo

Aktives Mitglied
Mit nur einem Schleifendurchlauf wirst du das Sieb so nicht implementieren können. Du brauchst auf jeden Fall eine äußere Schleife und eine Innere. Über die Forensuche findest du einige Threads zum gleichen Thema. Oder du schaust dir das Verfahren nochmal auf Wikipedia an, dort kannst du die Pseudocode Implementierung fast genauso benutzen, nur noch ein bisschen Java Syntax anpassen.
 

Kababär

Top Contributor
Mit nur einem Schleifendurchlauf wirst du das Sieb so nicht implementieren können. Du brauchst auf jeden Fall eine äußere Schleife und eine Innere.

Richtig. In der äußeren kannst du dein int i=2 setzen, deinen horsty aber brauchst du anders.
Nämlich inwiefern muss dein horsty aussehen? Er bildet die Zählervariable im zweiten Durchlauf, also in der inneren Schleife. Wann kannst du dein array null setzen? Das sollte deine Bedingung sein.
Wie stellt man eine Bedigung...?

Jetzt, wo du alles ausgesiebt hast, also wirklich aus dem Array raushast, musst du dein Array nur noch ausgeben lassen. Sieht doch aber doof aus wenn da viele Nullen sind... also was machst du, damit die Nullen verschwinden in der Ausgabe?

LG
 

flatpat

Mitglied
ich glaub ich habs geschafft.
hab zwar nicht alle eure tipps umgesetzt, aber erstmal bin ich froh überhaupt ein ergebnis zu haben.

Danke!!

Java:
public class NochmalSieben
{
	public static int[] arrayAn(int a)
	{
		int [] start = new int[a];
		for (int i=0; i<start.length; i++)
		{
			start[i] = i+1;
		}
		return start;
	}
	public static int[] prim(int[]sieb)
	{
		for (int i=2; i<sieb.length; i++)
		{
			for (int horsty=2; horsty<Math.sqrt(sieb.length); horsty++)
			{
				if (sieb[i] % horsty == 0 && i+1 !=horsty)
				{
					sieb[i]=0;
				}
			}
		}
		return sieb;
	}				

	public static void main(String[] args) 
	{
		System.out.println(java.util.Arrays.toString(prim(arrayAn(28))));
	}
}

Ausgabe:
Code:
[1, 2, 3, 0, 5, 0, 7, 0, 0, 0, 11, 0, 13, 0, 0, 0, 17, 0, 19, 0, 0, 0, 23, 0, 0, 0, 0, 0]
 

Kababär

Top Contributor
Deine Ausgabe sieht doch schon ganz ordentlich aus. Nun kannst du noch die Nullen wegstreichen.
Einfach mit einer anderen Bedingung array!=0, printout ;)

Prüfe höhere Zahlen, zum Beispiel mal mit 1000.

Was dein
Java:
for (int horsty=2; horsty<Math.sqrt(sieb.length); horsty++)
bewirken soll, weiß ich grad gar nicht so. Ich nehme an du hast die Zahl 28 (siehe Ausgabe) als Parameter mitgeliefert. sqrt(28)=5,291.... also zählt dein horsty nu noch 3 mal hoch?
Aber ok, solang es funktioniert ist ja alles OK.

LG und herzlichen Glückwunsch :)
 

flatpat

Mitglied
hast du wieder recht.
hab das mit der wurzel ausprobiert, weil mir anfangs die 3 und die 5 raus"genullt" wurden. das "&& i+1 != horsty" macht diesen versuch aber überflüssig :)

Java:
if (sieb[i] % horsty == 0 && i+1 !=horsty)

du hast mir sehr geholfen. du glaubst gar nicht wie lang ich daran verzweifelt bin.
grössere zahlen gehen übrigens auch - das mit den Nullen versuch ich morgen mal.

ich editiers mal ohne wurzel rein:



Java:
public class NochmalSieben
{
	public static int[] arrayAn(int a)
	{
		int [] start = new int[a];
		for (int i=0; i<start.length; i++)
		{
			start[i] = i+1;
		}
		return start;
	}
	public static int[] prim(int[]sieb)
	{
		for (int i=2; i<sieb.length; i++)
		{
			for (int horsty=2; horsty<sieb.length; horsty++)
			{
				if (sieb[i] % horsty == 0 && i+1 !=horsty)
				{
					sieb[i]=0;
				}
			}
		}
		return sieb;
	}				

	public static void main(String[] args) 
	{
		System.out.println(java.util.Arrays.toString(prim(arrayAn(999))));
	}
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
P Sieb des Eratosthenes Java Basics - Anfänger-Themen 9
K need help doing Eratosthenes siev Java Basics - Anfänger-Themen 3
S Hilfe bei "Sieb des Eratosthenes" mit Array & Markierung Java Basics - Anfänger-Themen 2
M Sieb des Eratosthenes für Anfänger Java Basics - Anfänger-Themen 10
C Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 20
I Sieb des Eratosthenes Java Basics - Anfänger-Themen 10
S Sieb des Eratosthenes Java Basics - Anfänger-Themen 5
P Sieb des Eratosthenes (bis 65536) Java Basics - Anfänger-Themen 8
H Sieb des Eratosthenes - Programmierfehler Java Basics - Anfänger-Themen 3
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
sserio printf integer formatting Java Basics - Anfänger-Themen 17
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Uhrzeitespanne in Integer Wert umrechnen Java Basics - Anfänger-Themen 1
T Java Integer multiplizieren Java Basics - Anfänger-Themen 6
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
C Integer in Vierer-Zahlblöcke aufteilen Java Basics - Anfänger-Themen 11
L integer Java Basics - Anfänger-Themen 6
Zeppi Integer umschreiben Java Basics - Anfänger-Themen 5
rafi072001 Integer Anomalie Java Java Basics - Anfänger-Themen 7
Eule25 Arbeit mit long und int, Error: integer number too large Java Basics - Anfänger-Themen 2
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
M Integer aus aus einer Klasse in andere speichern Java Basics - Anfänger-Themen 12
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
D Fibonacci overflow integer Java Basics - Anfänger-Themen 8
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
S Integer Wert wird nicht übernommen Java Basics - Anfänger-Themen 2
V int zu Integer und String Java Basics - Anfänger-Themen 6
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
M Regex zum Integer.parseInt Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
K String in Integer umwandeln Java Basics - Anfänger-Themen 4
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
D integer negativen Wert abspeichern Java Basics - Anfänger-Themen 3
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
J Methoden Moving a n integer matrix Java Basics - Anfänger-Themen 3
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
CptK Bestimmten Integer Wert aus Array filtern Java Basics - Anfänger-Themen 2
L String in Integer umwandeln Java Basics - Anfänger-Themen 3
K Datentypen String zu Integer parsen Java Basics - Anfänger-Themen 2
B Liste von Integer -> Nächster Wert bekommen Java Basics - Anfänger-Themen 5
S Integer aus Array filtern Java Basics - Anfänger-Themen 4
F Referenzvariable vom Typ "Integer" definieren. (Klausuraufgabe) Java Basics - Anfänger-Themen 5
M set Integer bzw. set null mit SQL DB Java Basics - Anfänger-Themen 9
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
B Variablen integer im Array Java Basics - Anfänger-Themen 5
C Liste o.ä. erstellen mit <Integer, <Integer, String> Java Basics - Anfänger-Themen 7
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Orkanson Datentypen Integer in String umwandeln/hinzufügen Java Basics - Anfänger-Themen 3
O Datentypen Integer mit führender Null Java Basics - Anfänger-Themen 13
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
D Fehler: String zu Integer Java Basics - Anfänger-Themen 7
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
E Integer und Array übergeben Java Basics - Anfänger-Themen 9
W Fehler bei Integer.parseInt() Java Basics - Anfänger-Themen 4
R String in Integer Java Basics - Anfänger-Themen 11
D Komischer Fehler nach <Integer> List Java Basics - Anfänger-Themen 2
J Integer in Array einlesen Java Basics - Anfänger-Themen 14
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
H Integer in Datei schreiben Java Basics - Anfänger-Themen 2
B OOP Cannot instantiate the type AuDList<Integer> Java Basics - Anfänger-Themen 18
3 ArrayList Integer Wrapper Klasse als Ersatz für normale Arrays Java Basics - Anfänger-Themen 10
K Methoden Integer runden/aufrunden Java Basics - Anfänger-Themen 2
E Erste Schritte Lower Bounded Wildcards <? super Integer> Java Basics - Anfänger-Themen 1
M Datentypen Integer und Float Konflikt Java Basics - Anfänger-Themen 3
J Integer-Werte in Array ein- bzw. auslesen Java Basics - Anfänger-Themen 7
T Integer Wert in andere Methode übergeben Java Basics - Anfänger-Themen 2
N Probleme bei Speicherung eines Integer-Array in Datei speichern Java Basics - Anfänger-Themen 3
C Zwei Integer Arrays "kombinieren" Java Basics - Anfänger-Themen 10
D Integer Fehlermeldung exception Java Basics - Anfänger-Themen 4
M Höchster Integer aus 9 Zahlen Java Basics - Anfänger-Themen 13
I Klassen Integer von BL in GUI übergeben | Fehler Java Basics - Anfänger-Themen 4
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
D Datentypen Ein Integer Feld in einen String wandeln ohne Nullenunterdrückung Java Basics - Anfänger-Themen 6
R integer zahlenfolge speichern, ausgeben Java Basics - Anfänger-Themen 1
L Summer aller Integer-Zahlen im Intervall [x,y] Java Basics - Anfänger-Themen 6
K ArrayList<Integer> problem Java Basics - Anfänger-Themen 3
L Vom Benutzer eingebene Integer addieren und ausgeben. Java Basics - Anfänger-Themen 11
S integer absteigend sortieren Java Basics - Anfänger-Themen 2
S ArrayList<ArrayList<Integer>> sortieren Java Basics - Anfänger-Themen 3
T Variablen Integer in Stmt Java Basics - Anfänger-Themen 13
B gemischter string zu integer Java Basics - Anfänger-Themen 22
R Big Integer Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben