From 3d271507b2ad90a357fb128df8fcf47b66f91ffb Mon Sep 17 00:00:00 2001 From: Stephen Lynn Date: Sat, 11 Jun 2022 21:03:20 +0800 Subject: improved perl ch-2.pl --- challenge-168/steve-g-lynn/perl/ch-2.pl | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/challenge-168/steve-g-lynn/perl/ch-2.pl b/challenge-168/steve-g-lynn/perl/ch-2.pl index d1f6f0aced..4732c9b136 100755 --- a/challenge-168/steve-g-lynn/perl/ch-2.pl +++ b/challenge-168/steve-g-lynn/perl/ch-2.pl @@ -1,13 +1,17 @@ #!/usr/bin/perl -use Math::Prime::XS qw(is_prime sieve_primes); - +use Math::Prime::XS qw(is_prime); +print &home_prime(10),"\n"; +#773 print &home_prime(16),"\n"; -#-- should be 31636373 [wikipedia example] +#31636373 +print &home_prime(20),"\n"; +#3318308475676071413 sub home_prime { - local ($n)=@_; + my ($n)=@_; + is_prime($n) && return $n; while (1){ $n=&factors($n); (is_prime($n)) && last; @@ -18,20 +22,25 @@ sub home_prime { sub factors { #--return concatenated prime factors of a number n - local ($n)=@_; - local @primes=sieve_primes($n); - local $retstring=""; + my ($n)=@_; + local $sqrt_n=int(sqrt($n)); + + my $retstring=""; if (is_prime($n)){ return $n; } else { - foreach $prime (sort{$a<=>$b} @primes){ + for $prime (2 .. $sqrt_n){ + #-- no need to get primes first + #-- routine automatically finds only prime factors while ( ($n % $prime) == 0){ $n /= $prime; $retstring .= $prime; } + (is_prime($n)) && last; } + ($n > 1) && ($retstring .= $n); } return $retstring; } -- cgit From 5182b192585848d1b91afce11d151906762d9bcd Mon Sep 17 00:00:00 2001 From: Stephen Lynn Date: Sat, 11 Jun 2022 21:07:19 +0800 Subject: improved ch-2.pl --- challenge-168/steve-g-lynn/perl/ch-2.pl | 1 + 1 file changed, 1 insertion(+) diff --git a/challenge-168/steve-g-lynn/perl/ch-2.pl b/challenge-168/steve-g-lynn/perl/ch-2.pl index 4732c9b136..4fcc0e19dd 100755 --- a/challenge-168/steve-g-lynn/perl/ch-2.pl +++ b/challenge-168/steve-g-lynn/perl/ch-2.pl @@ -9,6 +9,7 @@ print &home_prime(16),"\n"; print &home_prime(20),"\n"; #3318308475676071413 + sub home_prime { my ($n)=@_; is_prime($n) && return $n; -- cgit From 337a373ae28cb51b8d74be6505b2f695e5ac2cb5 Mon Sep 17 00:00:00 2001 From: Stephen Lynn Date: Sat, 11 Jun 2022 21:10:58 +0800 Subject: improved perl ch-2.pl --- challenge-168/steve-g-lynn/perl/ch-2.pl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/challenge-168/steve-g-lynn/perl/ch-2.pl b/challenge-168/steve-g-lynn/perl/ch-2.pl index 4fcc0e19dd..67db0846ea 100755 --- a/challenge-168/steve-g-lynn/perl/ch-2.pl +++ b/challenge-168/steve-g-lynn/perl/ch-2.pl @@ -10,6 +10,7 @@ print &home_prime(20),"\n"; #3318308475676071413 + sub home_prime { my ($n)=@_; is_prime($n) && return $n; @@ -21,6 +22,7 @@ sub home_prime { } + sub factors { #--return concatenated prime factors of a number n my ($n)=@_; -- cgit From ff980517b9e50ee68b469cddc0ca26e5f9982cee Mon Sep 17 00:00:00 2001 From: Stephen Lynn Date: Sat, 11 Jun 2022 21:20:08 +0800 Subject: improved ch-2.pl --- challenge-168/steve-g-lynn/perl/ch-2.pl | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/challenge-168/steve-g-lynn/perl/ch-2.pl b/challenge-168/steve-g-lynn/perl/ch-2.pl index 67db0846ea..be079624bc 100755 --- a/challenge-168/steve-g-lynn/perl/ch-2.pl +++ b/challenge-168/steve-g-lynn/perl/ch-2.pl @@ -9,8 +9,6 @@ print &home_prime(16),"\n"; print &home_prime(20),"\n"; #3318308475676071413 - - sub home_prime { my ($n)=@_; is_prime($n) && return $n; @@ -21,12 +19,10 @@ sub home_prime { return $n; } - - sub factors { #--return concatenated prime factors of a number n my ($n)=@_; - local $sqrt_n=int(sqrt($n)); + local $sqrt_n=floor(sqrt($n)); my $retstring=""; -- cgit From bfba759aa6812adf1536870315cc6648b97163c5 Mon Sep 17 00:00:00 2001 From: Stephen Lynn Date: Sat, 11 Jun 2022 21:45:00 +0800 Subject: improved ch-2.pl --- challenge-168/steve-g-lynn/perl/ch-2.pl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/challenge-168/steve-g-lynn/perl/ch-2.pl b/challenge-168/steve-g-lynn/perl/ch-2.pl index be079624bc..5fe95544ad 100755 --- a/challenge-168/steve-g-lynn/perl/ch-2.pl +++ b/challenge-168/steve-g-lynn/perl/ch-2.pl @@ -4,8 +4,10 @@ use Math::Prime::XS qw(is_prime); print &home_prime(10),"\n"; #773 + print &home_prime(16),"\n"; #31636373 + print &home_prime(20),"\n"; #3318308475676071413 @@ -43,3 +45,6 @@ sub factors { } return $retstring; } + +1; + -- cgit