Algorithm 找到除以N的高度数

Algorithm 找到除以N的高度数,algorithm,numbers,primes,Algorithm,Numbers,Primes,我必须找到小于或等于平方根(N)并除以N的最大数 最直接的解是O(平方根(N)),有O(logN)解吗?因为在10^18的范围内,如果N是复合的,那么 N = MaximumDivisor(N) * MinimumDivisor(N). 如果N等于p*q,其中p和q是素数,您应该首先找到这个素数来回答您的问题。所以这个问题一般来说并不容易。目前还没有具有O(logN)复杂度的已知算法 目前还没有一种算法可以在多项式时间内对所有整数进行因子运算,也就是说,对于某些常数k,它可以在时间O(b^k)

我必须找到小于或等于
平方根(N)
并除以
N
的最大数


最直接的解是O(平方根(N)),有O(logN)解吗?因为在10^18的范围内,如果N是复合的,那么

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

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

目前还没有一种算法可以在多项式时间内对所有整数进行因子运算,也就是说,对于某些常数k,它可以在时间O(b^k)内对b位数字进行因子运算。这类算法的存在性和不存在性都没有得到证明,但人们普遍怀疑它们不存在,因此问题不在P类中。问题显然在NP类中,但没有被证明是NP完全的或不是NP完全的。一般认为它不是NP完全的


也许你能在不同的地方找到一些有用的东西

@ChristoferOhlsson如何找到O(lgn)中的最小除数?从逻辑上讲,如果我能找到最小的除数,我就能找到O(1)中最大的除数,所以对我来说,它们是完全相同的问题。但是我们很容易理解寻找最小除数的速度更快。@ChristoferOhlsson显然它离O(sqrt(N))还差得远,O(sqrt(N))是OP的问题。设N是两个相对紧素数的乘积(例如:17*19=323),如何找到17是O(lgn)~8.3而不是O(sqrt(N))~17.9?我不能承担比现有技术更好的责任。我只是在提供帮助和信息。