http://www.perlmonks.org?node_id=266579


in reply to Matrix Formation

Some observations:

next if $n =~ /0\d+/;
  • The \d+ is uneccesary in this line if you are just trying to skip numbers that contains zeroes. /0/ is adequate and infact, this regex misses numbers that end in zero such as 1120, 1130, etc.
    $count++ if $num % $divider == 0;
  • The logic on this line is backwards, it should last if the result of % is non-zero, that way you will not have to check through all the number combinations if the first div fails.
    foreach my $divider (2..9)
  • Finally, if you are looking for the highest common divisor, you should turn this loop around and start with 9, I would also move it inside the foreach (qw(01 02 13 23)) and do a last if you find a valid divisor for all 4 numbers again stopping you from checking too many combinations.

    HTH