wha*_*cko 1 c c++ algorithm math
要理解这个问题,让我们先考虑这些例子:
4 6 =(2 2)6 = 2 12 =(2 3)4 = 8 4 = 16 3 = 4096.
因此,我们可以说,4 6,2 12,8 4和16 3是相同的.
27 3 = 3 9 = 19683
所以,27 3和3 9都是相同的.
现在的问题是,对于任何给定对一个b如何计算可能的所有其他(如果有的话)X Ý其中,一个b = X ý .I很感兴趣的,可以在C/C++来高效地实现的算法.
例如:
如果输入是这样的:
4,6 期望的输出:(2,12),(8,4)
8,4 期望的输出:(2,12),(2,6)
27,3 期望的输出:(3,9)
12,6 期望的输出:(144,3),(1728,2)
7,5 期望的输出: No duplicate possible
这主要是一个数学问题.你可以提取一个数字的所有素数因子,你将得到素数及其指数的列表,即216000 = 2 6*3 3*5 3.然后取指数的GCD:GCD(6,3,3)= 3.用GCD除以指数得到数字的最小根,2 2*3 1*5 1 = 60.然后考虑GCD -因子3是1和3.有一种方法可以将数字表示为GCD每个因子的积分幂.您可以将其表达为(60 3)1或(60 1)3.
编辑:修复数学错误.