让a和b为两个数字,
(a)= n1;
的除数(b)= n2;
的除数如何使用n1和n2找到(a * b)的除数?
a=15; b=20
n1=4; //no of divisors of a
n2=6; //no of divisors of b
ans=(a*b); //300
num_ans=18; // no of divisors of a*b
有没有找到它的公式?
答案 0 :(得分:2)
如果你知道的是每个数字的除数,你就无法确定两个数的乘积的除数。
例:
2和4分别具有两个和三个除数。他们的产品8有四个除数
图5和9分别具有两个和三个除数。他们的产品45,有六个除数。
这两个数字对都有相同数量的单个除数,但它们的产品有不同的除数。
答案 1 :(得分:1)
不,但您可以推断出有关答案的一些信息。
ans
的除数数量的界限是[max(n1,n2),n1 * n2]
(对于20和21而言是[6,24])。
通过从20和21的除数生成420的除数,很容易看出它是如何产生的(至少对于较小的数字)。
20的除数是列标题,21的除数是行标题。单元格包含该行和列的col_header * row_header
结果。
1 2 4 5 10 20
+----+----+----+-----+-----+-----|
1 | 1 | 2 | 4 | 5 | 10 | 20 |
3 | 3 | 6 | 12 | 15 | 30 | 60 |
7 | 7 | 14 | 28 | 35 | 70 | 140 |
21 | 21 | 42 | 84 | 105 | 210 | 420 |
不幸的是,20和21是特殊情况,因为它们是相对素数。其他组合导致单元格中的重复值。
例如,15和20的表格如下所示:
1 3 5 15
+----+----+-----+-----|
1 | 1 | 3 | 5 | 15 |
2 | 2 | 6 | 10 | 30 |
4 | 4 | 12 | 20 | 60 |
5 | 5 | 15 | 25 | 75 |
10 | 10 | 30 | 50 | 150 |
20 | 20 | 60 | 100 | 300 |
数字5,10,15,20,30和60出现多次,因此我们不能简单地将表格中的单元格数作为除数的数量。表中唯一值的数量等于除数的数量(18),它们落在区间[6,24]内。
这可以给你一个球场估计得到答案的复杂性,其算法基本上产生所有的除数,丢弃重复。