65,208
社区成员
发帖
与我相关
我的任务
分享多项式肯定有。用质因子分解做说明你们方法错了。
没看懂,太高深了
没看懂楼主问的题目,写得更清楚点就好了 我第一想到的是用 log
此题无解。 如果n包含一个perfect power,则有 n = a * (b^k) 且 k > 1 and gcd (a, b) == 1. 那么求b只能用 n 除以从 2到 log n之间的所有素数,可是这个开销是EXP(β)级别的,假如 | n | = β。 从另一个角度考虑,假如有算法能在polynomial time内计算出来指数项,那也就可以在这个时间复杂度内找到n的一个factor了,那么“大数分解问题”就也能在polynomial time内解决了,可它是 NP-Hard的。
O(2^β log ^2 β) 不是一个关于β的多项式时间
这里先假设β是8的倍数,n >=0,至于负数,取相反数,然后依照同样的方法计算,然后只要排除偶数次幂----即消除求出来的最大幂中的2因子就可以了. 1)分解质因数. 2)求各个因数次数的最大公约数. 这个最大公有数,就是最大的幂的次数. 如果最大公约数>=2, 那么一定是某个数的幂,如果是1 那么只是自己的1次幂而已. 不知道这个算法,是否在多项式时间内. 这个时间复杂度的计算,有点复杂; 估计要用到数学归纳法什么的; 分解质因数,不知道能不能有Olog(N)-->即<= O(β)的算法. 由于各因子的次数 <= β,所以每次gcd算法 < logβ 由于因子数<= β 所以gcd的计算次数 <= β 并且可以 优化到 <= logβ 那么 如果分解质因数可以Olog(N), 总的时间复杂度 O(β log ^2 β)<O(β ^2) 如果分解质因数只是O(N) = O(2^β) 那么,总的时间复杂度 O(2^β log ^2 β)
数字不大的话枚举就好了,从1-n
没看懂,太高深了