P:\test>findstr # LR-nearFactor.pl
#!/usr/bin/perl
# my $sqrt = sqrt( $N );
my $end = $#factor;
return $f ; #< $sqrt ? $f : undef;
splice(@subset, $#subset - 1, 1);
splice(@subset, $#subset - 1, 2, $pos);
P:\test>LR-nearFactor.pl 24777695232
11
1
P:\test>findstr # LR-nearFactor.pl
#!/usr/bin/perl
my $end = $#factor;
splice(@subset, $#subset - 1, 1);
splice(@subset, $#subset - 1, 2, $pos);
P:\test>LR-nearFactor.pl 24777695232
11
1
####
====================
Name: Math-Pari
Version: 2.010603
Author: Ilya Zakharevich (cpan@ilyaz.org)
Title: Math-Pari
Abstract: Perl interface to PARI.
InstDate: 21:18:09 2005
Location: http://ppm.ActiveState.com/cgibin/PPM/ppmserver-5.8-windows.pl?urn:/PPMServer
Available Platforms:
1. MSWin32-x86-multi-thread-5.8
====================
##
##
#!/usr/bin/perl
use strict;
use warnings;
use Math::Pari qw/:int factorint sqrtint PARImat/;
my $N = '1' . '0' x $ARGV[0] . '1';
print "Result for $N is ", nearest_sqrt( $N );
sub prime_factors {
my $N = shift;
my %p_fact = PARImat( factorint( $N ) ) =~ /(\d+)/g;
return map { ($_) x $p_fact{$_} } sort { $a <=> $b } keys %p_fact;
}
sub nearest_sqrt {
my $N = shift;
my $sqrt = sqrtint( $N );
my @factor = prime_factors( $N );
....
##
##
P:\test>timethis TM-nearFactor.pl 55 & timethis LR-nearFactor.pl 55
TimeThis : Command Line : TM-nearFactor.pl 55
TimeThis : Start Time : Sat Feb 26 14:38:33 2005
Result for 100000000000000000000000000000000000000000000000000000001 is 7376575663406069736503138401
TimeThis : Command Line : TM-nearFactor.pl 55
TimeThis : Start Time : Sat Feb 26 14:38:33 2005
TimeThis : End Time : Sat Feb 26 14:38:36 2005
TimeThis : Elapsed Time : 00:00:03.281
TimeThis : Command Line : LR-nearFactor.pl 55
TimeThis : Start Time : Sat Feb 26 14:38:37 2005
Result for 100000000000000000000000000000000000000000000000000000001 is -1
TimeThis : Command Line : LR-nearFactor.pl 55
TimeThis : Start Time : Sat Feb 26 14:38:37 2005
TimeThis : End Time : Sat Feb 26 14:38:40 2005
TimeThis : Elapsed Time : 00:00:03.265
P:\test>timethis TM-nearFactor.pl 58 & timethis LR-nearFactor.pl 58
TimeThis : Command Line : TM-nearFactor.pl 58
TimeThis : Start Time : Sat Feb 26 14:38:50 2005
Result for 100000000000000000000000000000000000000000000000000000000001 is 22665854592333022426775023
TimeThis : Command Line : TM-nearFactor.pl 58
TimeThis : Start Time : Sat Feb 26 14:38:50 2005
TimeThis : End Time : Sat Feb 26 14:39:07 2005
TimeThis : Elapsed Time : 00:00:17.578
TimeThis : Command Line : LR-nearFactor.pl 58
TimeThis : Start Time : Sat Feb 26 14:39:07 2005
Result for 100000000000000000000000000000000000000000000000000000000001 is -1
TimeThis : Command Line : LR-nearFactor.pl 58
TimeThis : Start Time : Sat Feb 26 14:39:07 2005
TimeThis : End Time : Sat Feb 26 14:39:25 2005
TimeThis : Elapsed Time : 00:00:17.578
##
##
P:\test>timethis TM-nearFactor.pl 57 & timethis LR-nearFactor.pl 57
TimeThis : Command Line : TM-nearFactor.pl 57
TimeThis : Start Time : Sat Feb 26 14:38:49 2005
Result for 10000000000000000000000000000000000000000000000000000000001 is 846610559160061
TimeThis : Command Line : TM-nearFactor.pl 57
TimeThis : Start Time : Sat Feb 26 14:38:49 2005
TimeThis : End Time : Sat Feb 26 14:38:50 2005
TimeThis : Elapsed Time : 00:00:00.140
TimeThis : Command Line : LR-nearFactor.pl 57
TimeThis : Start Time : Sat Feb 26 14:38:50 2005
Result for 10000000000000000000000000000000000000000000000000000000001 is -1
TimeThis : Command Line : LR-nearFactor.pl 57
TimeThis : Start Time : Sat Feb 26 14:38:50 2005
TimeThis : End Time : Sat Feb 26 14:38:50 2005
TimeThis : Elapsed Time : 00:00:00.109