找到除N的高度数

时间:2017-04-13 06:47:41

标签: algorithm numbers primes

我必须找到小于或等于mapValue的最大数字并除以SQUARE_ROOT(N)

最直接的解决方案是 O(SQUARE_ROOT(N)),是否有任何 O(logN)解决方案,因为数量可以在 10 ^范围内变化很大18

2 个答案:

答案 0 :(得分:1)

如果N等于p*q,其中pq是素数,您应该首先找到这个素数来回答您的问题。所以这个问题一般不比Integer factorization容易。并且没有已知的具有O(logN)复杂度的算法。

  

没有公布可以在多项式时间内对所有整数进行因子分解的算法,即,对于某些常数k,可以在时间O(b ^ k)中考虑b比特数。这种算法的存在和不存在都没有得到证实,但通常怀疑它们不存在,因此问题不在P类中。问题显然在NP类中,但尚未被证明是不是NP完整的。通常怀疑它不是NP完全的。

你可以在不同的factorization algorithms找到有用的东西。

答案 1 :(得分:-1)

如果N是复合的,那么

N = MaximumDivisor(N) * MinimumDivisor(N).