P中的素数 - 跑到sqrt怎么样?

Pro*_*mer 2 algorithm math primes computer-science p-np

我正在学习PNP.
我已经读过,确定给定数字是否为素数的问题是P中的一个问题,这意味着它有一个多项式时间算法来解决它.
我还读到这个事实在2002年被证明是AKS的算法.

众所周知,我们可以通过运行直到其平方根来确定特定数字是否为素数.

伪代码:

isPrime(N):

sqrt(N) <- squareRoot(N)

for i from 2 to Sqrt(N)
    if (n mod i == 0)
        return false
return true
Run Code Online (Sandbox Code Playgroud)

我的问题很简单:
为什么上面的算法不能证明这个问题在P?
谢谢 :)

Dav*_*tat 7

算法是否是多项式时间取决于输入的表示.例如,大数字9223372036854775807适合64位无符号类型.AKS结果的重要性在于它是位数(例如,64)的多项式而不是数字本身(例如,9223372036854775807).