package simulation.
sieve.
try1;
/*
* Basic iterative Sieve of Eratosthenes
*/
class Sieve1
{
def eratosthenes
(a_limit
)
{
def primes =
[]
use (IntegerCatagory
)
{
sieve
(a_limit
) { primeNumber ->
primes
<< primeNumber
}
}
primes
}
def sieve
(a_limit, a_foundPrime
)
{
/*
* Create initial list of numbers
*/
def numbers =
[]
a_limit.
times { number ->
numbers
<< number
}
/*
* For each factor in list of numbers
*/
(2..
a_limit).
each { factor ->
(0..
numbers.
size()).
each { index ->
def number = numbers
[index
]
if (numbers
[index
] >
0 && number.
hasFactor(factor
))
{
numbers
[index
] =
0
}
else if (number == factor
)
{
a_foundPrime
(factor
)
}
}
}
}
}
class IntegerCatagory
{
def static boolean hasFactor
(Integer a_number,
Integer a_factor
)
{
a_number != a_factor && a_number % a_factor ==
0
}
}
...