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.
#!/usr/bin/perl
use warnings;
use strict;
my $maxprimes=100;
my $value=1;
my $count=0;
my $start=time();
print "Printing the first $maxprimes numbers that are prime... \n";
while ($count < $maxprimes)
{
$value++;
my $composite=0;#false
OUTER:
for (my $i=2; $i < $value; $i++)
{
INNER:
for (my $j=$i; $j<$value; $j++)
{
if (($j*$i) == $value)
{
$composite=1;#true
last OUTER;
}
}
}
# if (! $composite) #this works
if ($composite == 1) #from the java section, doesn't work
{
$count++;
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.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|