Hab folgendes Problem: Muss die folgende Aufgabe Lösen, weiß aber nicht wie die for -Schleife lauten muss mit n quadrat < m und wie er die letzten zehn Primzahlen ausgeben soll. Kann mir da einer helfen
Pseudocode für die Berechnung aller Primzahlen kleiner als m (mit m > 0):
1. Setze sieb = {2, 3, …, m–1}.
2. Für i = 2, 3, …, mit i2 < m, wiederhole:
2.1. Wenn i zu sieb gehört:
2.1.1. Entferne alle Vielfachen von i aus sieb.
3. Jetzt enthält sieb alle Primzahlen kleiner als m.
Dazu muss ich eine Klasse BerechnePrimzahlen erstellen ,
die das folgende Interface implementiert:
import java.util.*;
public interface Eratosthenes {
Set getPrimes(long m1,long m2);
//"erzeugt" die Menge aller Primzahlen >=m1 und <m2
}
In der Klasse BerechnePrimzahlen soll Ihre main()-Methode Ihre Implementierung
testen, indem Sie für vier verschiedene Kombinationen von m1 und m2 sowohl die
Anzahl der Primzahlen zwischen m1 und m2 (im obigen Sinne) als auch die (sortierte)
Liste der letzten zehn Primzahlen dieser Menge ausgeben.
Hier mein Ansatz:
Danke im Voraus
Micha
Pseudocode für die Berechnung aller Primzahlen kleiner als m (mit m > 0):
1. Setze sieb = {2, 3, …, m–1}.
2. Für i = 2, 3, …, mit i2 < m, wiederhole:
2.1. Wenn i zu sieb gehört:
2.1.1. Entferne alle Vielfachen von i aus sieb.
3. Jetzt enthält sieb alle Primzahlen kleiner als m.
Dazu muss ich eine Klasse BerechnePrimzahlen erstellen ,
die das folgende Interface implementiert:
import java.util.*;
public interface Eratosthenes {
Set getPrimes(long m1,long m2);
//"erzeugt" die Menge aller Primzahlen >=m1 und <m2
}
In der Klasse BerechnePrimzahlen soll Ihre main()-Methode Ihre Implementierung
testen, indem Sie für vier verschiedene Kombinationen von m1 und m2 sowohl die
Anzahl der Primzahlen zwischen m1 und m2 (im obigen Sinne) als auch die (sortierte)
Liste der letzten zehn Primzahlen dieser Menge ausgeben.
Hier mein Ansatz:
Code:
public class BerechnePrimzahlen
{
public static void main(String argv[])
{
// 1. Deklaration der Variablen
int i, j;
int[] sieb = new int[101];
// 2. Initialisierung des Feldes, sieb[0] unbenutzt
for (i=1; i<101; i++)
sieb[i]=i;
// 3. Loeschen der Vielfachen
for (i=2; i<=10; i++)
for (j=2*i; j<=100; j+=i)
sieb[j]=0;
// 4. Ausgabe der Primzahlen
System.out.println("\nPrimzahlen :");
for (i=2; i<=100; i++)
if (sieb[i]>0)
System.out.print(sieb[i] + " ");
// 5. Beenden des Programms
System.exit(0);
}
}
Danke im Voraus
Micha