From 6b4ffbd7c7bc3b4f3948e2029411fbe2a6f7f4ae Mon Sep 17 00:00:00 2001 From: Bob Lied Date: Thu, 6 Jul 2023 07:30:12 -0500 Subject: Week 223 solutions --- challenge-223/bob-lied/perl/ch-1.pl | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/challenge-223/bob-lied/perl/ch-1.pl b/challenge-223/bob-lied/perl/ch-1.pl index de9a6d4625..cecd089ec2 100644 --- a/challenge-223/bob-lied/perl/ch-1.pl +++ b/challenge-223/bob-lied/perl/ch-1.pl @@ -26,6 +26,42 @@ my $DoTest = 0; GetOptions("test" => \$DoTest, "verbose" => \$Verbose); exit(!runTest()) if $DoTest; +package Sieve; + +sub new($class, $n) +{ + my $self = { + _max => 10, + _sieve => [ false, false, true, true, false, true, false, true, false, false, false ], + }; + bless $self, $class; +} + +sub upto($self, $n) +{ + return if $n <= $self->{_max}; + push @{$self->{_sieve}}, (true) x ( $n - $self->{_max} ); + for (my $p = $n; $p*$p <= $n; $p++ ) + { + if ( $self->{_sieve}->[$p] ) + { + for (my $i = $p*$p ; $i <= $n ; $i += $p ) + { + $self->{_sieve}->[$i] = false; + } + } + } +} + +sub count($self, $n) +{ +} + +1; + +package main; + + sub sieve($n) { my @prime = (false, false, true, (true,false) x (($n-1)/2) ); -- cgit