#!/usr/bin/perl -w
# gen_primes - generate a perlish list of prime factors up to and
# including 2**32-1
# This software is written by Jonathan Feinberg, and is free for all
# copying, use, and tattooing.
use strict;
my @progs = qw! ./primes ./factor !;
my @primes = (2);
my @psquared = (4);
my $max = 2**32 - 1;
my $i;
FIND_NEXT_PRIME:
for (my $n = 3; ; $n += 2) {
IS_IT_PRIME:
for ($i = 0; $i < @primes; $i++) {
next FIND_NEXT_PRIME if $n % $primes[$i] == 0;
last IS_IT_PRIME if $psquared[$i] > $n;
}
push @primes, $n;
push @psquared, $n**2;
last FIND_NEXT_PRIME if $psquared[-1] > $max;
}
my $table = '';
my $t = ' ';
foreach my $p (@primes) {
$t .= "$p, ";
if (length $t > 70) {
$table .= "$t\n";
$t = ' ';
}
}
$table .= "$t\n" if length $t > 2;
{
local $^I = '~';
local @ARGV = @progs;
while (<>) {
s/#PRIMES GO HERE/$table/;
print;
}
}
exit 0;