如果我有一个数字,让我们说12,我如何计算乘以12的所有整数?
示例:如果为12,则解决方案为1x12,2x6,3x4。
怎么做?
答案 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)
检查除数。使用那些和他们的对。注意方块。