質問
たい割の整数で入。例えば、計数記録は:
169 - ( 13 x 13 times)
146 - ( 73 x 2 times)
150 - ( 50 x 3 times)
175 - ( 25 x 7 times)
168 - ( 84 x 2 )
160 - ( 80 x 2 times)
時にはこれまで以上に10kになりたい全てのものに1000 時にはこれまで以上に100kになりたい全てのものに10k
このようにしたい要因は多くの注目を集めています。どのように実現する。あなPerlモジュールをご利用のためのこれらの種類の数が実現されるのでしょう。
との合計数記録する10k.で分割されるべきである1000x10回のみない100や10s.
使用できます sqrt
機能です。ない私を用いて作られています。また、入力146いget(73,2).
解決
に、そのまま使うことができアルゴリズムを探その他の言語Perlです。ありませんPerl特別な魔法のアイデア。での実施というこの問題はあるんじゃないでしょうかく見た目はほとんど同じなのですが、実装に使用言語を問いません。
何を問題にしようとしていませ解決?∞Ps&l∞ps...お久しぶりです。できるので、すでに右のアルゴリズムの場合はどんどん大きくなっていますしようとしてい:
- なぜな数が10,000万人の利用1,000い多数のない1,000要因です。
- いすべての要素を最大とその仲間?
- 何をとっているということにsqrt機能などに対すだが次のアルゴリズムにする必要がありますが、すぐにに対して繰り返し処理を実行するまでの階の平方根をテストす。最整数をお持ちでない整数平方根です。
他のヒント
数が素数でない場合は、因数分解アルゴリズムを使用することができます。
このような関数の例がここにあります:<のhref =「http://www.classhelper.org/articles/perl-by-example-factoring-numbers/factoring-numbers-with-perl.shtml」 rel = "nofollowをさnoreferrer"> http://www.classhelper.org/articles/perl-by-example-factoring-numbers/factoring-numbers-with-perl.shtml の
の許容範囲(例えば、9〜15)、テスト数をモジュロ剰余を計算し、最小の選択におけるいくつかの一般的な数値をループします。
sub compute_width {
my ($total_records) = @_;
my %remainders;
for(my $width = 9; $width <= 15; $width += 1) {
my $remainder = $total_records % $width;
$remainders{$width} = $remainder;
}
my @widths = sort {
$remainders{$a} <=> $remainders{$b} ||
$a <=> $b
} keys %remainders;
return $widths[0];
}