All pastes #230729 Raw Edit

Anonymous

public text v1 · immutable
#230729 ·published 2006-10-31 12:08 UTC
rendered paste body
/* lösung zum übungsblatt "sieb des eratostenes" von dominik panzer

anmerkung: im array werden keine objekte gespeichert, da es genügt einfach den wert 0 als
	   dummy zu verwenden für gelöschte werte, ergebnis ist das selbe.

algorithmus

	2 zählervariavlen, einer usereingabevariable, ein array für den zahlenraum 2 bis n und die usereingabe referenz erstellen
	n einlesen
	wenn n kleiner gleich 1 abbrechen
	array erzeugen mit genug platz für 2..n
	werte eintragen
	jedes feld auslesen, alle felder rechts davon mod mit dem wert des ersten feldes
	wenn 0 dann löschen
	solange bis alle felder durch sind
	ergebnis ausgeben.
*/
class siebdeseratostenes	//start der klasse
{

	public static void main ( String [] args )	//die hauptmethode
	{
		int i;	//countervariable 1
		int j;	//und nummer 2
		int zahl;	// repräsentiert den wert n
		int filterarray_ref[];	//das zahlenarray
		StdEingabe instream_ref;	//diereferenzvariable des userinputs

		instream_ref = new StdEingabe();	//objekt erzeugen

		zahl = instream_ref.liesIntegerN("Eingabe fuer Wer n: "); //daten einlesen

		if (zahl <= 1)	//evtl abbrechen
		{
			System.out.println("n muss größer 1 sein");
			return;
		}

		filterarray_ref = new int[zahl - 1]; // -1 da die "1" unberücksichtigt bleibt
		for (i=0; i<filterarray_ref.length; i++) //array füllen
			filterarray_ref[i] = i + 2; //2 ist der erste wert, i anfangs 0

		for (i=0;i<=filterarray_ref.length;i++) //jedes feld durchgehen
		{

				for (j=i+1;j<filterarray_ref.length;j++) //jedes feld rechts des gewählten feldes
				{

					if (filterarray_ref[j] != 0 && filterarray_ref[i] != 0) //mod 0 ungültig, daher als dummy
						if (filterarray_ref[j] % filterarray_ref[i] == 0) filterarray_ref[j] = 0;
				}
		}

		System.out.println("Die Primzahlen bis n = " + zahl + " lauten:"); //ergebnis output

		for (i=0;i<filterarray_ref.length;i++)
		{
			if (filterarray_ref[i] != 0)
		 	System.out.print(filterarray_ref[i] + " ");
		}

		System.out.println();

	  }
}