gambas-source-code/benchmark/primes.pl
Benoît Minisini 3cf59d321a [DEVELOPMENT ENVIRONMENT]
* NEW: Files can be dropped from files managers to the project treeview.
  They are automatically inserted into the project then.

[WIKI CGI SCRIPT]
* BUG: '{' and '}' are not interpreted anymore between '=='.

[BENCHMARKS]
* NEW: Add Gambas/Perl/Python benchmarks to the repository.

[INTERPRETER]
* NEW: A Stop instruction encountered inside a component is not ignored
  anymore and stops the program.
* BUG: Fix the File.SetName, File.SetExt and File.SetBaseName methods.

[COMPILER]
* NEW: The preprocessor now undestands the False and True constants.

[GB.FORM]
* NEW: Clean up the Stock class icon loading algorithm.
* BUG: Fix the Gnome icon map.

[GB.FORM.STOCK]
* NEW: Support for svg stock icons.

[GB.QT4]
* BUG: Drag.Show() now works for DnD operations started outside of the 
  application.

[GB.GTK]
* BUG: Drag.Show() now works for DnD operations started outside of the 
  application.


git-svn-id: svn://localhost/gambas/trunk@3400 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2010-12-27 14:28:59 +00:00

44 lines
870 B
Perl
Executable file

#!/usr/bin/perl -w
use strict;
use warnings;
sub get_primes7($) {
my ($n) = @_;
if ($n < 2) { return (); }
if ($n == 2) { return (2); }
# do only odd numbers starting at 3
my @s = ();
for (my $i = 3; $i < $n + 1; $i += 2) {
push(@s, $i);
}
# n**0.5 simpler than math.sqr(n)
my $mroot = $n ** 0.5;
my $half = scalar @s;
my $i = 0;
my $m = 3;
while ($m <= $mroot) {
if ($s[$i]) {
my $j = int(($m*$m - 3) / 2);
$s[$j] = 0;
while ($j < $half) {
$s[$j] = 0;
$j += $m;
}
}
$i = $i + 1;
$m = 2*$i + 3;
}
my @res = (2);
foreach (@s) {
push(@res, $_) if ($_);
}
return @res;
}
my @res;
for (1..10) {
@res = get_primes7(10000000);
print scalar @res; print "\n";
}