Работы Кристиана для метода грубой силы, чтобы быть более элегантным, попробуйте реализовать некоторый алгоритм целочисленной факторизации .
РЕДАКТИРОВАТЬ:
После копания через CPANдолжен) Я нашел Math::Factor::XS
, вот пример (также я смоделировал чистый пример Perl, используя grep / map):
#!/usr/bin/perl
use strict;
use warnings;
use 5.10.0;
use Math::Factor::XS qw/factors matches/;
my $num = 12;
say "Factors:";
my @factors = factors $num;
say for @factors;
say "Matches:";
say $_->[0] . "x" . $_->[1] for ( [ 1, $num ] , matches($num, \@factors));
# using grep
say "Grep:";
my @grep_factors = map { [ $_ , $num / $_ ] } grep { !($num % $_) } (1 .. int sqrt $num);
say $_->[0] . "x" . $_->[1] for @grep_factors;