@Override
	public boolean evaluate(Work w) {
		int i;
		int j;
		int limit;
		int prime;

		int number_of_primesX = 0;
		int number_of_41primesX = 1;
		int number_of_43primesX = 0;

		
		System.out.println("Thread " + lc_omp.omp_get_thread_num() + ": " + w.start + " - " + w.end);
		for (i = w.start; i <= w.end; i += 2) {
			limit = (int) Math.sqrt((float) i) + 1;

			prime = 1;
			j = 3;
			while (prime != 0 && (j <= limit)) {
				if (i % j == 0)
					prime = 0;
				j += 2;
			}

			if (prime != 0) {
				if (print_primes != 0)
					System.out.printf("%d ", i);
				number_of_primesX++;
				if (i % 4 == 1)
					number_of_41primesX++;
				if (i % 4 == 3)
					number_of_43primesX++;
			}
		}
		synchronized (lc_omp.critical()) {
			number_of_primes += number_of_primesX;
			number_of_41primes += number_of_41primesX;
			number_of_43primes += number_of_43primesX;
		}
		return true;
	}