Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.andrew.unit10;
- import java.util.*;
- public class SieveOfEratosthenes {
- public SieveOfEratosthenes() {
- }
- public Set<Integer> populate(Set<Integer> set, int max) {
- for (int i = 2; i <= max; i++) {
- set.add(new Integer(i));
- }
- return set;
- }
- public Set<Integer> sieve(Set<Integer> set) {
- int max = set.size() + 1;
- boolean[] prime = new boolean[max + 1];
- for (int i = 2; i <= max; i++) {
- prime[i] = true;
- }
- for (int i = 2; i * i <= max + 1; i++) {
- if (prime[i]) {
- for (int j = i; i * j <= max; j++) {
- prime[i * j] = false;
- }
- }
- }
- for (int i = 0; i < prime.length; i++) {
- if (prime[i] == false) {
- set.remove(new Integer(i));
- }
- }
- return set;
- }
- public void print(Set<Integer> set) {
- for (Integer i : set)
- System.out.println(i.toString());
- }
- public static void main(String[] args) {
- SieveOfEratosthenes test = new SieveOfEratosthenes();
- TreeSet<Integer> ts = new TreeSet<Integer>();
- long timeA = System.currentTimeMillis();
- test.populate(ts, 300000);
- test.sieve(ts);
- timeA = System.currentTimeMillis() - timeA;
- test.print(ts);
- HashSet<Integer> hs = new HashSet<Integer>();
- long timeB = System.currentTimeMillis();
- test.populate(hs, 300000);
- test.sieve(hs);
- timeB = System.currentTimeMillis() - timeB;
- test.print(hs);
- System.out.println("TreeSet time = " + timeA + "\nHashSet time = "
- + timeB);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment