Готовая программа

#!/usr/bin/perl

use warnings;

my $n=shift or die "$0: Укажите число в командной строке\n";

print "2\n" if $n>=2;

for(my $i=3; $i<=$n; $i+=2)
{
	my $flag=1;
	for(my $j=3; $j<$i; $j+=2)
	{
		if($i % $j==0)
		{
			$flag=0;
			last;
		}
	}
	print "$i\n" if $flag;
}
#!/usr/bin/perl

use warnings;

my $n=shift or die "$0: Укажите число в командной строке\n";

print "2\n" if $n>=2;

for(my $i=3; $i<=$n; $i+=2)
{
	my $flag=1;
	for(my $j=3; $j**2<=$i; $j+=2)
	{
		if($i % $j==0)
		{
			$flag=0;
			last;
		}
	}
	print "$i\n" if $flag;
}
#!/usr/bin/perl

use warnings;

my $n=shift or die "$0: Укажите число в командной строке\n";

my @primes=(2);

print "2\n" if $n>=2;

for(my $i=3; $i<=$n; $i+=2)
{
	my $flag=1;
	for my $j(@primes)
	{
		last if $j**2>$i;
		if($i % $j==0)
		{
			$flag=0;
			last;
		}
	}
	if($flag)
	{
		push @primes, $i;
		print "$i\n";
	}
}
#!/usr/bin/perl

use warnings;

my $n=shift or die "$0: Укажите число в командной строке\n";

my @sieve=2..$n;

while(@sieve)
{
	while(@sieve and $sieve[0]==0)
	{
		shift @sieve;
	}
	last unless @sieve;
	print my $p=shift @sieve, "\n";
	for(my $i=$p-1; $i<@sieve; $i+=$p)
	{
		$sieve[$i]=0;
	}
}
#!/usr/bin/perl

use warnings;

my $n=shift or die "$0: Укажите число в командной строке\n";

my @primes=(2, 3, 5, 7);

my $wheelSize=1;
$wheelSize*=$_ for @primes;

my @wheel;
	
outer: for my $n(2..$wheelSize+1)
{
	for my $p(@primes)
	{
		next outer unless $n % $p;
	}
	push @wheel, $n;
}

sub isPrime
{
	my $k=shift;
	for(@primes)
	{
		return 1 if $k==$_;
		return 0 unless $k % $_;
	}

	my @w=@wheel;
	while()
	{
		my $s=shift @w;
		return 1 if $s**2>$k;
		return 0 unless $k % $s;
		push @w, $s+$wheelSize;
	}
}

for(2..$n)
{
	print "$_\n" if isPrime($_);
}
Информатика-54© А. Н. Швец