aznishboy

SieveOfEratosthenes

Apr 10th, 2012
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.43 KB | None | 0 0
  1. package me.andrew.unit10;
  2.  
  3. import java.util.*;
  4.  
  5. public class SieveOfEratosthenes {
  6.  
  7.     public SieveOfEratosthenes() {
  8.     }
  9.  
  10.     public Set<Integer> populate(Set<Integer> set, int max) {
  11.         for (int i = 2; i <= max; i++) {
  12.             set.add(new Integer(i));
  13.         }
  14.         return set;
  15.     }
  16.  
  17.     public Set<Integer> sieve(Set<Integer> set) {
  18.         int max = set.size() + 1;
  19.         boolean[] prime = new boolean[max + 1];
  20.         for (int i = 2; i <= max; i++) {
  21.             prime[i] = true;
  22.         }
  23.         for (int i = 2; i * i <= max + 1; i++) {
  24.             if (prime[i]) {
  25.                 for (int j = i; i * j <= max; j++) {
  26.                     prime[i * j] = false;
  27.                 }
  28.             }
  29.         }
  30.         for (int i = 0; i < prime.length; i++) {
  31.             if (prime[i] == false) {
  32.                 set.remove(new Integer(i));
  33.             }
  34.         }
  35.         return set;
  36.     }
  37.  
  38.     public void print(Set<Integer> set) {
  39.         for (Integer i : set)
  40.             System.out.println(i.toString());
  41.     }
  42.  
  43.     public static void main(String[] args) {
  44.         SieveOfEratosthenes test = new SieveOfEratosthenes();
  45.         TreeSet<Integer> ts = new TreeSet<Integer>();
  46.         long timeA = System.currentTimeMillis();
  47.         test.populate(ts, 300000);
  48.         test.sieve(ts);
  49.         timeA = System.currentTimeMillis() - timeA;
  50.         test.print(ts);
  51.         HashSet<Integer> hs = new HashSet<Integer>();
  52.         long timeB = System.currentTimeMillis();
  53.         test.populate(hs, 300000);
  54.         test.sieve(hs);
  55.         timeB = System.currentTimeMillis() - timeB;
  56.         test.print(hs);
  57.         System.out.println("TreeSet time = " + timeA + "\nHashSet time = "
  58.                 + timeB);
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment