找到乘以X的所有整数?

时间:2011-06-01 23:35:33

标签: perl

如果我有一个数字,让我们说12,我如何计算乘以12的所有整数?

示例:如果为12,则解决方案为1x12,2x6,3x4。

怎么做?

2 个答案:

答案 0 :(得分:6)

Christian's Works for a蛮力方法,更优雅地试图实现一些integer factorization algorithm

编辑:

在挖掘CPAN之后(你总是应该)我找到了Math::Factor::XS,这是一个例子(我也使用grep / map模拟了一个纯粹的Perl示例):

#!/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;

答案 1 :(得分:5)

从1到sqrt(x)检查除数。使用那些和他们的对。注意方块。