use strict;
use warnings;
use v5.12;
use constant TOP => 1000000;
say "1 is prime.";
say "2 is prime.";
my $found = 2; # We already found 1 and 2.
for( my $i = 3; $i < TOP; $i += 2 ) {
my $qualifies = 1;
for( my $j = $i - 2; $j > 1; $j -= 2 ) {
if( $i % $j == 0 ){
$qualifies = 0;
last;
}
}
if( $qualifies ) {
say "$i is prime.";
$found++;
}
}
say "Found $found primes between 1 and ", TOP, ".\n";
##```
##
#include
using namespace std;
// First 501 primes are found from 1 to 3571
const int SEARCH_TO = 1000000;
const int SEARCH_START = 3;
/*
* You can double check by comparing with the link below:
* http://en.wikipedia.org/wiki/List_of_prime_numbers
* to verify accuracy.
*/
int main() {
cout << "1 is a prime number." << endl;
cout << "2 is a prime number." << endl;
int found = 2;
int i;
for ( i = SEARCH_START; i < SEARCH_TO; i+=2 ) {
int qualifies = 1;
for ( int j = i-2 ; j > 1; j-=2 ){
if ( i % j == 0 ) {
qualifies = 0;
break;
}
}
if ( qualifies ) {
cout << i << " is a prime number." <
``````
##
use strict;
use warnings;
use v5.12;
use constant TOP => 1000000;
say "1 is prime.";
say "2 is prime.";
my $found = 2; # We already found 1 and 2.
OUTER: for( my $i = 3; $i < TOP; $i += 2 ) {
for( my $j = $i - 2; $j > 1; $j -= 2 ) {
( not $i % $j ) && next OUTER;
}
say "$i is prime.";
$found++;
}
say "Found $found primes between 1 and ", TOP, ".\n";
##
```

```
##
..... (long list of primes omitted )....
59753 is prime.
59771 is prime.
59779 is prime.
59791 is prime.
59797 is prime.
59809 is prime. <-------I hit CTRL-C after this iteration.
Out of memory!
Use of uninitialized value $j in modulus (%) at primes.pl line 17.
Use of uninitialized value $i in modulus (%) at primes.pl line 17.
Illegal modulus zero at primes.pl line 17.
Free to wrong pool 2f4d50 not 1000 during global destruction.
```