From 396867334ee4fe6295c5fa8415537f857e9b0063 Mon Sep 17 00:00:00 2001 From: E7-87-83 Date: Sun, 15 Aug 2021 09:52:31 +0800 Subject: improve bound on ch-1.pl --- challenge-125/cheok-yin-fung/perl/ch-1.pl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/challenge-125/cheok-yin-fung/perl/ch-1.pl b/challenge-125/cheok-yin-fung/perl/ch-1.pl index 10fabf76ef..6258feda8a 100644 --- a/challenge-125/cheok-yin-fung/perl/ch-1.pl +++ b/challenge-125/cheok-yin-fung/perl/ch-1.pl @@ -7,7 +7,7 @@ use warnings; use v5.10.0; use experimental 'signatures'; use List::Util qw/max/; -use Test::More tests => 7; +use Test::More tests => 8; my $num = $ARGV[0] || 5; my @arr = pyth($num)->@*; @@ -37,7 +37,7 @@ sub pyth ($n) { } } - for my $b0 ($n+1..$n*$n) { + for my $b0 ($n+1..int ($n*$n-1)/2) { my $is_sq = $b0*$b0 + $n*$n; if (sqrt($is_sq) == int sqrt($is_sq)) { push @ans, [$n , $b0 ,sqrt($is_sq)]; @@ -55,3 +55,4 @@ ok scalar @{pyth(4)} == 1, "Number 4"; ok scalar @{pyth(5)} == 2, "Number 5"; ok scalar @{pyth(8)} == 2, "Number 8"; ok scalar @{pyth(13)} == 2, "Number 13"; +ok scalar @{pyth(5740)} == 44, "Number 5740" # oeis.org/A046081 -- cgit From ac1325e6eee9ccff046085735d61aa969dc09b75 Mon Sep 17 00:00:00 2001 From: E7-87-83 Date: Sun, 15 Aug 2021 10:02:48 +0800 Subject: improve bound on ch-1.pl --- challenge-125/cheok-yin-fung/perl/ch-1.pl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/challenge-125/cheok-yin-fung/perl/ch-1.pl b/challenge-125/cheok-yin-fung/perl/ch-1.pl index 6258feda8a..7a700d2ed0 100644 --- a/challenge-125/cheok-yin-fung/perl/ch-1.pl +++ b/challenge-125/cheok-yin-fung/perl/ch-1.pl @@ -37,6 +37,11 @@ sub pyth ($n) { } } + + # (C+1)^2 - C^2 = 2C + 1 + # 2C + 1 <= n^2 + # C <= (n^2-1)/2 + for my $b0 ($n+1..int ($n*$n-1)/2) { my $is_sq = $b0*$b0 + $n*$n; if (sqrt($is_sq) == int sqrt($is_sq)) { -- cgit From 12e2ed795e741c3070ffb5ead04b6e2b857e4696 Mon Sep 17 00:00:00 2001 From: E7-87-83 Date: Sun, 15 Aug 2021 17:26:11 +0800 Subject: better expression of logic --- challenge-125/cheok-yin-fung/perl/ch-1.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/challenge-125/cheok-yin-fung/perl/ch-1.pl b/challenge-125/cheok-yin-fung/perl/ch-1.pl index 7a700d2ed0..8d0c3a650a 100644 --- a/challenge-125/cheok-yin-fung/perl/ch-1.pl +++ b/challenge-125/cheok-yin-fung/perl/ch-1.pl @@ -38,9 +38,9 @@ sub pyth ($n) { } - # (C+1)^2 - C^2 = 2C + 1 - # 2C + 1 <= n^2 - # C <= (n^2-1)/2 + # c^2 - b_max^2 >= (b_max+1)^2 - b_max^2 = 2*b_max + 1 + # 2*b_max + 1 <= n^2 + # b_max <= (n^2-1)/2 for my $b0 ($n+1..int ($n*$n-1)/2) { my $is_sq = $b0*$b0 + $n*$n; -- cgit