
  package com.cassiano.performance;
    
  public class PerformanceAgletImpl implements PerformanceAglet {

    // constantes
    private final int max_num = 52900, num_iterations = 900;

    // atributo 
    private short count = 0;

    // construtor
    public PerformanceAgletImpl() {
      super(); 
    }

    // implementacao das operacoes descritas na interface

    public short run() {
      count ++;
      return count;
    }

    public float eratosthenes() {
      int i, k, iteration, num_primes = 0;    
      boolean isprime[] = new boolean [max_num];
      double start, end;
      start = System.currentTimeMillis();
      for (iteration=0; iteration<num_iterations; iteration++) {
        for (i=0; i<max_num; i++) {
     	  isprime[i] = true;
        }
	    i = 2;
        while ((i*i) < max_num) {
          if (isprime[i] == true) {
            k = (i + i);
	        while (k < max_num) {
	          isprime[k] = false;
	          k += i;
	        }
          }
	      i += 1;
        }
        num_primes = 0;
        for (i=0; i<max_num; i++) {
	      if (isprime[i] == true)
	        num_primes += 1;
        }
        
      }
      
      end = System.currentTimeMillis();  
      return ((float)(end-start)/1000); 
      
    }

  }
