I noticed that the comparison is not the same between the two versions.
Java version: if ($composite == 1)
Perl version: if (! $composite)
The Perl version is finding primes where the Java version is just printing the first 100 numbers that come along. That is why it was so fast.
print "Printing the first $maxprimes numbers that are prime... \n";
while ($count < $maxprimes)
for (my $i=2; $i < $value; $i++)
for (my $j=$i; $j<$value; $j++)
if (($j*$i) == $value)
# if (! $composite) #this works
if ($composite == 1) #from the java section, doesn't work
print "$value is prime\n";
my $time = (time() - $start);
print "Took $time seconds.";
Update: It looks like it prints the non-prime numbers.
Printing the first 100 numbers that are prime...
4 is prime
6 is prime
8 is prime
9 is prime
10 is prime
12 is prime
14 is prime
15 is prime
128 is prime
129 is prime
130 is prime
132 is prime
133 is prime
Took 0 seconds.