Frage zu Treemap

Sindelar

Grünschnabel
Hallo,
zuerst einmal muss ich sagen, dass ich ein blutiger Anfänger bin, aber bei mir an der Uni steigen sie schon gleich voll ein.
Wir sollen Primzahlen anhand des Siebs des Eratosthenes berechnen. Diese Klasse bekommen wir vorgegeben:

import java.util.List;
import java.util.Map;

public final class Eratosthenes {

/* private constructor to prevent object creation of this utility class */
private Eratosthenes() {
}

public static Map<Integer , List <Integer >> primes(int n) {
...
}

}

Und das ist die zugehörige Aufgabe mit TreeMaps:
Implementieren Sie die Methode primes so, dass die zurückgegebene Map für jede Zahl
kleiner oder gleich n (als Schlüssel in der Map) eine Liste der Primteiler (als Wert in der
Map) enthält.

Leider hatten wir nicht einmal Treemaps in der Vorlesung, daher habe ich wirklich keine Plan wie man das macht.
Hoffe jemand kann mir da weiterhelfen. Vielen Dank
 

Thomas Darimont

Erfahrenes Mitglied
Hallo,

suchst du sowas?
Java:
package de.tutorials;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class Eratosthenes {
	public static void main(String[] args) {
		System.out.println(primes(100));
	}

	public static Map<Integer, List<Integer>> primes(int n) {
		Map<Integer, List<Integer>> map = new TreeMap<Integer, List<Integer>>();

		for (int i = 2; i <= n; i++) {
			map.put(i, primeFactors(i));
		}

		return map;
	}

	public static List<Integer> primeFactors(int i) {
		List<Integer> primes = new ArrayList<Integer>();
		for (int j = 2; j <= i; j++) {
			if (i % j == 0) {
				primes.add(j);
				i /= j;
				j = 1;
			}
		}
		return primes;
	}
}

Gruß Tom
 

Neue Beiträge