1: package de.luschny.math.primes;
2:
3: import de.luschny.math.util.ILoggable;
4: import de.luschny.math.util.PositiveRange;
5:
6: /**
7: * An interface for a prime number sieve.
8: *
9: * @author Peter Luschny
10: * @version 2004-09-12
11: */
12:
13: public interface IPrimeSieve extends ILoggable
14: {
15:
16: /**
17: * Checks if a given number is prime.
18: *
19: * @param i
20: * The number the primality of which is to be checked.
21: * @return True if the given number is prime, false otherwise.
22: */
23:
24: boolean isPrime(int i);
25:
26: /**
27: * Get the n-th prime number. (The first prime number is 2, the second 3,
28: * the third 5, ...)
29: *
30: * @param n
31: * The index of the prime number searched.
32: * @return The n-th prime number.
33: */
34:
35: int getNthPrime(int n);
36:
37: /**
38: * The default iteration of the full sieve. Thus it gives the iteration of
39: * the prime numbers in the range [1, n], where n is the upper bound of the
40: * sieve, which is an argument to the constructor of the sieve.
41: *
42: * @return An iteration of the prime numbers in the range of the sieve.
43: */
44:
45: IPrimeIteration getIteration();
46:
47: /**
48: * Gives the iteration of the prime numbers in the range [low, high].
49: * <p/>
50: * Note: If the range is not in the range of the sieve, the function throws
51: * an IllegalArgumentException.
52: *
53: * @param low
54: * The lower bound of the range to be sieved.
55: * @param high
56: * The upper bound of the range to be sieved.
57: * @return An iteration of the prime numbers in the range [low, high].
58: */
59:
60: IPrimeIteration getIteration(int low, int high);
61:
62: /**
63: * Gives the iteration of the prime numbers in the given range.
64: * <p/>
65: * Note: If the range is not in the range of the sieve, the function throws
66: * an IllegalArgumentException.
67: *
68: * @param range
69: * The range of integers to be sieved.
70: * @return An iteration of the prime numbers over the given range.
71: */
72:
73: IPrimeIteration getIteration(PositiveRange range);
74: }